Σύνταξη (γλώσσα προγραμματισμού): Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
μ Αντικατάσταση παρωχημένου προτύπου με references tag
Σύνδεσμος προς 1 βιβλία για επαληθευσιμότητα.) #IABot (v2.1alpha3
Γραμμή 30:
Τα επόμενα είναι παραδείγματα καλώς σχηματισμένων ακολουθιών από λεκτικές μονάδες για αυτήν τη γραμματική: '<code>12345</code>', '<code>()</code>', '<code>(a b c232 (1))</code>'
 
Η γραμματική που χρειάζεται για να οριστεί μια γλώσσα προγραμματισμού κατηγοριοποιείται ανάλογα με τη θέση της στην [[ιεραρχία Τσόμσκι]]. Η σύνταξη των περισσότερων γλωσσών προγραμματισμού μπορεί να οριστεί χρησιμοποιώντας μια γραμματική Τύπου-2, δηλ. είναι [[γραμματική χωρίς συμφραζόμενα|γραμματικές χωρίς συμφραζόμενα]].<ref>{{cite book | author = Michael Sipser | year = 1997 | title = Introduction to the Theory of Computation | publisher = PWS Publishing | isbn = 0-534-94728-X | url-access = registration | url = https://archive.org/details/introductiontoth00sips }} Section 2.2: Pushdown Automata, pp.101&ndash;114.</ref> Υπάρχουν όμως εξαιρέσεις. Σε κάποιες γλώσσες όπως η [[Perl]] και η Lisp ο ορισμός (ή η υλοποίηση) της γλώσσας επιτρέπει δομές που εκτελούνται στη διάρκεια της φάσης της συντακτικής ανάλυσης. Επιπλέον, αυτές οι γλώσσες έχουν δομές που επιτρέπουν στον προγραμματιστή να τροποποιήσει τη συμπεριφορά του συντακτικού αναλυτή. Αυτός ο συνδυασμός πρακτικά κάνει δυσδιάκριτα τα όρια μεταξύ συντακτικής ανάλυσης και εκτέλεσης, και κάνει τη συντακτική ανάλυση μη-υπολογίσιμο πρόβλημα (undecidable problem) σε αυτές τις γλώσσες, δηλαδή η φάση της συντακτικής ανάλυσης μπορεί να μην τερματίζει. Για παράδειγμα, είναι δυνατό στην Perl να εκτελεστεί κώδικα κατά τη συντακτική ανάλυση με τη χρήση της εντολής <code>BEGIN</code>, και τα πρωτότυπα συναρτήσεων της Perl (function prototypes) μπορούν να επηρεάσουν τη συντακτική ερμηνεία, ακόμα και τη συντακτική εγκυρότητα του υπόλοιπου κώδικα.<ref>Οι παρακάτω συζητήσεις δίνουν κάποια παραδείγματα:
* [http://www.jeffreykegler.com/Home/perl-and-undecidability Perl and Undecidability]
* [http://lambda-the-ultimate.org/node/3564#comment-50578 LtU comment clarifying that the undecidable problem is membership in the class of Perl programs]