Yacc

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

Το 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.

Δείτε επίσης 
 Κατάλογος βοηθημάτων του Unix
 Bison: Η GNU έκδοση του yacc.
 Lex (και Flex), οι πιο συχνά χρησιμοποιούμενοι λεκτικοί αναλυτές για yacc (και Bison).
 BNF, μια μετασύνταξη για γραμματικές χωρίς συμφραζόμενα

Αναφορές

Πηγές 
 Stephen C. Johnson. YACC: Yet Another Compiler-Compiler . Unix Programmer's Manual  Vol 2b, 1979.

Εξωτερικοί σύνδεσμοι 
 Συνέντευξη του Stephen C. Johnson στο Computerworld σχετικά με το YACC 
 ML-Yacc μια έκδοση του yacc για τη γλώσσα Standard ML 
CL-Yacc, γεννήτρια συντακτικών αναλυτών LALR(1) για την Common Lisp 
 PLY, μια έκδοση του yacc για την Python 
 Θεωρία του yacc 
 ocamlyacc, έκδοση του yacc για την Objective Caml 
 Racc, έκδοση του yacc για τη Ruby 

Προγραμματισμός
Λογισμικό Unix
Μεταγλωττιστές
Εργαλεία προγραμματισμού Unix