Yacc

Το πρόγραμμα yacc παράγει συντακτικούς αναλυτές και δημιουργήθηκε από το Stephen C. Johnson στην AT&T για το λειτουργικό σύστημα Unix. Το όνομά του προέρχεται από τα αρχικά των λέξεων "Yet Another Compiler Compiler" ("άλλος ένας μεταγλωττιστής μεταγλωττιστών"). Παράγει ένα συντακτικό αναλυτή (το τμήμα του μεταγλωττιστή που διαβάζει τον πηγαίο κώδικα) με βάση μια αναλυτική γραμματική, γραμμένη σε μορφή κοντά στη BNF. Από ιστορικής άποψης, το yacc παρήγαγε τον κώδικα για το συντακτικό αναλυτή της γλώσσας προγραμματισμού C.[1]

Το yacc ήταν η εξορισμού γεννήτρια συντακτικών αναλυτών στα περισσότερα συστήματα Unix, αλλά σήμερα έχει πια αντικατασταθεί από πιο σύγχρονα (αλλά συμβατά) προγράμματα, όπως το Berkeley Yacc, το GNU bison, το MKS yacc και το Abraxas pcyacc. Μια ενημερωμένη έκδοση της αρχικής έκδοσης της AT&T συμπεριλαμβάνεται στο εγχείρημα OpenSolaris της Sun. Κάθε πρόγραμμα προσφέρει ελαφρές βελτιώσεις και επιπλέον στοιχεία σε σχέση με το αυθεντικό yacc, διατηρώντας τις ίδιες αρχές. Το yacc έχει επίσης γραφτεί πάλι για άλλες γλώσσες, όπως η Ratfor, η ML, η Ada, η Pascal, η Java, η Python και η Common Lisp.

Ο συντακτικός αναλυτής που παράγεται από το yacc χρειάζεται ένα λεκτικό αναλυτή. Υπάρχουν γεννήτριες συντακτικών αναλυτών, όπως το Lex ή το Flex, και το πρότυπο IEEE POSIX P1003.2 ορίζει τι λειτουργίες και απαιτήσεις έχουν το Lex και το Yacc.

Κάποιες εκδόσεις του yacc της AT&T αποτελούν λογισμικό ανοιχτού κώδικα. Για παράδειγμα, υπάρχει διαθέσιμος πηγαίος κώδικας (για διάφορες υλοποιήσεις) στις διανομές του Plan 9 και του OpenSolaris.

Εξωτερικοί σύνδεσμοι

[Επεξεργασία | επεξεργασία κώδικα]