ΘΠ06 - Μεταγλωττιστές Ανάνηψη από σφάλματα κατά τη συντακτική ανάλυση

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Copyright © 2005 Elsevier Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού Πραγματολογία των Γλωσσών Προγραμματισμού Michael L. Scott.
Advertisements

Λογισμικό Συστήματος Κλειώ Σγουροπούλου.
Ένα απλό πρόγραμμα σε C /* ********************************************* * This program prints out the sentence “This is a test.” * *********************************************
ΙΩΑΝΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΥ 1ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΑΡΑΣΚΕΥΗ 5 ΟΚΤΩΒΡΙΟΥ 2012 ΑΙΘΟΥΣΑ Β4 11.
Υλοποίηση μεταφραστή C με επεκτάσεις OpenMP Λεοντιάδης Ηλίας Τζούμας Γεώργιος Πτυχιακή εργασία Τελική παρουσίαση Υπεύθυνος καθηγητής Β. Β. Δημακόπουλος.
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Μήτρες (templates)  Μία μήτρα είναι ένα κομμάτι κώδικα που περιέχει παραμέτρους οι οποίες δέχονται ως τιμές τύπους δεδομένων.  Είναι ένας μηχανισμός.
NIKOΛΑΟΣ ΝΤΙΡΛΗΣ 5ο ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΙΘΟΥΣΑ Β4 1.  Ένα thread έχει: ID, program counter, register set, stack  Μοιράζεται με τα άλλα threads της ίδιας διεργασίας.
Π ΑΡΑΛΛΗΛΗ / ΚΑΤΑΝΕΜΗΜΕΝΗ ΕΠΕΞΕΡΓΑΣΙΑ ΚΑΙ ΕΦΑΡΜΟΓΕΣ Εισαγωγή στο OpenMP.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002 Κ. Μουρλάς, Λέκτορας Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους.
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
Εισαγωγή Ειδικά Θέματα Μεταγγλωτιστών Χειμερινό Εξάμηνο / Κατασκευή compiler για την γλώσσα Minijava.
1 Ολυμπιάδα Πληροφορικής Μάθημα 7. 2 Στόχοι μαθήματος Δημιουργία συναρτήσεων από το χρήστη Δομή προγράμματος με συναρτήσεις Συναρτήσεις και παράμετροι.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
ΣΥΝΑΡΤΗΣΕΙΣ.
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.
Γραμματικές Ι Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017.
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
Γλωσσική Τεχνολογία Εισαγωγικό Φροντιστήριο. Project του μαθήματος  Εργασία 2 ατόμων  Προφορική εξέταση για :  Project (80%)  Θεωρία (20%)  Στο φροντιστήριο.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΣΑ από κάτω-προς-τα-πάνω
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
Περιεχόμενα Μαθήματος
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Περιεχόμενα Μαθήματος
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Κεφάλαιο 10 – Υποπρογράμματα
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Δρ. Μαρία Ι. Ανδρέου Εισαγωγή στον Αντικειμενόστρεφη Προγραμματισμό (Object-Oriented Programming) Data Types, Variables, and Arithmetic.
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Πέρασμα παραμέτρων, συναρτήσεις δόμησης και αποδόμησης.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
2/28/00epl-1311 Παραδειγματα Aλγοριθμων Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1!
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΗΥ150 – ΠρογραμματισμόςΞενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Αναδρομή (1/2)
Slide 1/52 ΗΥ – 340 Γλώσσες και Μεταφραστές Φροντιστήριο Yacc.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
Τεχνολογία και Προγραμματισμός Υπολογιστών
Τεχνολογία και Προγραμματισμός Υπολογιστών
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
Εισαγωγή στον Προγ/μό Υπολογιστών
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Μεταγράφημα παρουσίασης:

ΘΠ06 - Μεταγλωττιστές Ανάνηψη από σφάλματα κατά τη συντακτική ανάλυση 1

Ανάνηψη από σφάλματα Διαδικασία κατά την οποία ανιχνεύεται ένα συντακτικό σφάλμα και συνεχίζεται η ανάλυση για την ανίχνευση περισσότερων λαθών. Τεχνικές ανάνηψης: Error Recovery Error Repair Error Correction

Error Recovery Ανίχνευση συντακτικού λάθους. Αγνόηση μέρους της εισόδου. Aρχικοποίηση περιβάλλοντος αναλυτή (στοίβα, μεταβλητές) για την ανάλυση της υπόλοιπης συμβολοσειράς εισόδου. Μπορεί να οδηγήσει σε ανίχνευση επόμενων λαθών που δεν είναι στην πραγματικότητα λάθη (cascaded errors) => ποιότητα ανάνηψης από σφάλματα. Οι φάσεις της σημασιολογικής ανάλυσης και της παραγωγής ενδιάμεσου κώδικα απενεργοποιούνται. Panic Mode: αναζήτηση για ένα ασφαλές σύμβολο (π.χ. ‘;’) από το οποίο επανεκκινείται η συντακτική ανάλυση.

Error Repair Διαδικασία κατά την οποία ανιχνεύεται ένα σφάλμα και τροποποιείται το κομμάτι της συμβολοσειράς που έχει ήδη αναλυθεί ή το επόμενο του με σκοπό την παραγωγή μίας έγκυρης εισόδου. Εισαγωγή/διαγραφή τερματικών συμβόλων. x=a b+c; //εισαγωγή του συμβόλου ‘=‘ ή ’+’ κτλ. μετά το a Οι επόμενες φάσεις συνεχίζονται κανονικά. Διορθωμένα συντακτικά σφάλματα μπορεί να δημιουργήσουν σφάλματα για τις επόμενες φάσεις.

Error Correction Ό,τι και στην τεχνική του Error Repair με τη διαφορά ότι οι τροποποιήσεις της εισόδου αντικατοπτρίζουν το τί ήθελε ο χρήστης να γράψει.

Error Recovery στον Bison (1/3) Προκαθορισμένη συμπεριφορά κατά την ανίχνευση σφάλματος: κλήση yyerror() για την εκτύπωση διαγνωστικού μηνύματος τερματισμός %error-verbose: οδηγία για πιο κατατοπιστικά μηνύματα Η προκαθορισμένη συμπεριφορά δεν υλοποιεί Error Recovery.

Error Recovery στον Bison (2/3) Παράγεται όταν ανιχνευθεί ένα συντακτικό σφάλμα. error: Όταν ανιχνευθεί σφάλμα, σηματοδοτεί μέχρι που θα πρέπει να αγνοηθεί η είσοδος, ώστε να συνεχίσει η συντακτική ανάλυση. stmt: error ‘;’ ; // είσοδος y = d; x = a b; Στοίβα: stmt ‘x’ ‘=‘ ‘a’, lookahead: ‘b’ Ανιχνεύεται σφάλμα=> εξάγονται τα ‘x’, ‘=‘, ‘a (Στοίβα: stmt) shift του error (Στοίβα: stmt error) διαγραφή ‘b’, lookahead: ‘;’ Στοίβα: stmt error ‘;’ => Στοίβα: stmt stmt

Error Recovery στον Bison (3/3) error: Μόλις ενεργοποιηθεί το σύμβολο καλείται η yyerror() yyerrok: μακροεντολή για την ένδειξη τέλους φάσης Error Recovery Φειδώ στη χρήση του error: δημιουργία συγκρούσεων αναφορά λαθών που δεν υπάρχουν “Error recovery strategies are necessarily guesses. When they guess wrong, one syntax error often leads to another.”

Παράδειγμα v1.0 (1/3) %{ #include <stdio.h> void yyerror (char const *s); extern int num_lines; %} %token TK_NUM TK_ID TK_BADID %left '-' '+' %left '*' '/' %left TK_NEG /* negation--unary minus */ %right '^' /* exponentiation */ %% /* The grammar follows. */ input: /* empty */ | input line ; line: ';' | exp ';'

Παράδειγμα v1.0 (2/3) exp: TK_NUM | TK_ID | exp '+' exp {printf("exp + exp\n");} | exp '-' exp {printf("exp - exp\n");} | exp '*' exp {printf("exp * exp\n");} | exp '/' exp {printf("exp / exp\n");} | '-' exp %prec TK_NEG {printf("-exp\n");} | exp '^' exp {printf("exp ^ exp\n");} | '(' exp ')' {printf("( exp )\n");} ; %% int main(void) { return yyparse(); } void yyerror (char const *s) { printf("%d: %s\n", num_lines, s);

Παράδειγμα v1.0 (3/3) Είσοδος: Έξοδος: 1. sdf 1234; 1: syntax error 2. 234fsdf + 234; 3. 1234 + asf; 4. (2345); 5. (asdf; 6. 1243 + 234; 7. 234); 8. 234 * 234; Έξοδος: 1: syntax error

Παράδειγμα v1.1 Είσοδος: Έξοδος: 1. sdf 1234; Προσθήκη: %error-verbose Είσοδος: 1. sdf 1234; 2. 234fsdf + 234; 3. 1234 + asf; 4. (2345); 5. (asdf; 6. 1243 + 234; 7. 234); 8. 234 * 234; Έξοδος: 1: syntax error, unexpected TK_NUM

Παράδειγμα v1.2 (1/2) %{ #include <stdio.h> void yyerror (char const *s); extern int num_lines; %} %error-verbose %token TK_NUM TK_ID TK_BADID %left '-' '+' %left '*' '/' %left TK_NEG /* negation--unary minus */ %right '^' /* exponentiation */ %% /* The grammar follows. */ input: /* empty */ | input line ; line: ';' | exp ';‘ | error ';‘ {yyerrok;} ;

Παράδειγμα v1.2 (2/2) Είσοδος: Έξοδος: 1. sdf 1234; 2. 234fsdf + 234; 3. 1234 + asf; 4. (2345); 5. (asdf; 6. 1243 + 234; 7. 234); 8. 234 * 234; Έξοδος: 1: syntax error, unexpected TK_NUM 2: syntax error, unexpected TK_BADID exp + exp ( exp ) 5: syntax error, unexpected ';' 7: syntax error, unexpected ')' exp * exp

Παράδειγμα v1.3 (1/2) exp: TK_NUM | TK_ID | TK_BADID {yyerror("invalid ID"); YYERROR; yyerrok;} | exp '+' exp {printf("exp + exp\n");} | exp '-' exp {printf("exp - exp\n");} | exp '*' exp {printf("exp * exp\n");} | exp '/' exp {printf("exp / exp\n");} | '-' exp %prec TK_NEG {printf("-exp\n");} | exp '^' exp {printf("exp ^ exp\n");} | '(' exp ')' {printf("( exp )\n");} ; %% int main(void) { return yyparse(); } void yyerror (char const *s) { printf("%d: %s\n", num_lines, s);

Παράδειγμα v1.3 (2/2) Είσοδος: Έξοδος: 1. sdf 1234; 2. 234fsdf + 234; 3. 1234 + asf; 4. (2345); 5. (asdf; 6. 1243 + 234; 7. 234); 8. 234 * 234; Έξοδος: 1: syntax error, unexpected TK_NUM 2: invalid ID exp + exp ( exp ) 5: syntax error, unexpected ';' 7: syntax error, unexpected ')' exp * exp

Παράδειγμα v1.4 (1/2) %{ #include <stdio.h> void yyerror (char const *s); extern int num_lines; %} %error-verbose %token TK_NUM TK_ID TK_BADID %left '-' '+' %left '*' '/' %left TK_NEG /* negation--unary minus */ %right '^' /* exponentiation */ %% /* The grammar follows. */ input: /* empty */ | input line ; line: ';' | exp ';‘ | exp error exp ';' {yyerror("missing arithmetic operator or ';'"); yyerrok;} | error ';‘ {yyerrok;} ;

Παράδειγμα v1.4 (2/2) Είσοδος: Έξοδος: 1. sdf 1234; 2. 234fsdf + 234; 3. 1234 + asf; 4. (2345); 5. (asdf; 6. 1243 + 234; 7. 234); 8. 234 * 234; Έξοδος: 1: syntax error, unexpected TK_NUM 1: missing arithmetic operator or ';' 2: invalid ID exp + exp ( exp ) 5: syntax error, unexpected ';‘ 7: syntax error, unexpected ')' exp * exp 8: missing arithmetic operator or ';'

Παράδειγμα v1.5 (1/2) exp: TK_NUM | TK_ID | TK_BADID {yyerror("invalid ID"); YYERROR; yyerrok;} | exp '+' exp {printf("exp + exp\n");} | exp '-' exp {printf("exp - exp\n");} | exp '*' exp {printf("exp * exp\n");} | exp '/' exp {printf("exp / exp\n");} | '-' exp %prec TK_NEG {printf("-exp\n");} | exp '^' exp {printf("exp ^ exp\n");} | '(' exp ')' {printf("( exp )\n");} | '(' exp error {yyerror("Missing operator ')'"); yyerrok;} ; %% int main(void) { return yyparse(); } void yyerror (char const *s) { printf("%d: %s\n", num_lines, s);

Παράδειγμα v1.5 (2/2) Είσοδος: Έξοδος: 1. sdf 1234; 2. 234fsdf + 234; 3. 1234 + asf; 4. (2345); 5. (asdf; 6. 1243 + 234; 7. 234); 8. 234 * 234; Έξοδος: 1: syntax error, unexpected TK_NUM 1: missing arithmetic operator or ';' 2: invalid ID exp + exp ( exp ) 5: syntax error, unexpected ';‘ 5: Missing operator ')' 7: syntax error, unexpected ')' exp * exp 8: missing arithmetic operator or ';'

Αναφορές Εγχειρίδιο χρήσης Bison. http://www.gnu.org/software/bison/manual/html_mono/bi son.html.gz . Charles Fischer, University of Wisconsin, Richard LeBlanc. Crafting a Compiler with C. Addison-Wesley, 1991.