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.
Δείτε επίσης
[Επεξεργασία | επεξεργασία κώδικα]- Κατάλογος βοηθημάτων του Unix
- Bison: Η GNU έκδοση του yacc.
- Lex (και Flex), οι πιο συχνά χρησιμοποιούμενοι λεκτικοί αναλυτές για yacc (και Bison).
- BNF, μια μετασύνταξη για γραμματικές χωρίς συμφραζόμενα
Αναφορές
[Επεξεργασία | επεξεργασία κώδικα]Πηγές
[Επεξεργασία | επεξεργασία κώδικα]- Stephen C. Johnson. YACC: Yet Another Compiler-Compiler Αρχειοθετήθηκε 2011-07-11 στο Wayback Machine.. 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 (Αγγλικά)