Σύνταξη (γλώσσα προγραμματισμού)

Η σύνταξη μιας γλώσσας προγραμματισμού είναι το σύνολο κανόνων που καθορίζει ποιοι συνδυασμοί συμβόλων θεωρούνται έγκυρα προγράμματα, βασιζόμενη στη λεκτική δομή (tokens) και στις γραμματικές παραγωγές. Ορίζεται τυπικά με κανονικές εκφράσεις για τα λεκτικά σύμβολα και με τη μορφή Μπάκους-Νάουρ (BNF) για τη γραμματική, ενώ η συντακτική ανάλυση (parsing) μετατρέπει τον πηγαίο κώδικα σε ιεραρχικά δέντρα αφηρημένης σύνταξης (AST) με τη βοήθεια εργαλείων όπως ο Yacc. Στην ιεραρχία Τσόμσκι, οι περισσότερες γλώσσες προγραμματισμού κατατάσσονται στις γραμματικές Τύπου-2 (χωρίς συμφραζόμενα), καθιστώντας την ανάλυσή τους διαχειρίσιμη. Ωστόσο, εξαιρέσεις αποτελούν γλώσσες όπως οι Perl και Lisp, οι οποίες επιτρέπουν την εκτέλεση κώδικα κατά τη φάση της ανάλυσης, δίνοντας τη δυνατότητα στον προγραμματιστή να τροποποιήσει τον ίδιο τον συντακτικό αναλυτή. Αυτός ο συνδυασμός πρακτικά καθιστά τη συντακτική ανάλυση μη-υπολογίσιμο πρόβλημα, καθώς η διαδικασία μπορεί να μην τερματίσει ποτέ για ορισμένα προγράμματα.