Κεφάλαιο 2: Τυπικές γλώσσες

Σχετικά έγγραφα
Κεφάλαιο 4: Συντακτική ανάλυση

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

Τυπικές Γλώσσες. Μεταγλωττιστές. (μέρος 2ο) Νίκος Παπασπύου, Κωστής Σαγώνας

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Ανοδικές Μέθοδοι Συντακτικής Ανάλυσης. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Γλώσσες Χωρίς Συμφραζόμενα

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση II

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Συντακτική Ανάλυση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση ΙII. Εαρινό Εξάμηνο Lec 11 26/03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 5 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Σύνταξη & Συντακτική Ανάλυση

Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216

Θέματα Μεταγλωττιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Θέματα Μεταγλωττιστών

Περιεχόμενα Τι περιγράφει ένα ΣΔ ΣΔ και παραγωγές Θεωρία Υπολογισμού Ενότητα 15: Συντακτικά Δέντρα Επ. Καθ. Π. Κατσαρός Τμήμα Πληροφορικής Επ. Καθ. Π.

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Απάντηση: (func endfunc)-([a-za-z])+

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης.

Μεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση

Μεταγλωττιστές. Ενότητα 7: Συντακτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Σύνταξη & Συντακτική Ανάλυση

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

Εισαγωγή στην Επιστήμη των Υπολογιστών

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Γλώσσες Χωρίς Συμφραζόμενα

Θέματα Μεταγλωττιστών

Ορισµοί. Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές. Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1)

Μεταγλωττιστές. μια φοιτητική προσέγγιση

Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 7: Ασυμφραστικές Γλώσσες (Γλώσσες Ελεύθερες Συμφραζομένων)

Κεφάλαιο 3 : Σύνταξη Γλωσσών Προγραμματισμού

Θα χρησιμοποιήσουμε το bison, μια βελτιωμένη έκδοση του yacc. Φροντιστήριο 2ο Εισαγωγή στο YACC. Yacc. Δομή Προγράμματος Yacc

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες

HY340, 2010 Α. Σαββίδης. Slide 3 / 43. Slide 4 / 43

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση VIΙ. Εαρινό Εξάμηνο Lec 15 09/04/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Μεταγλωττιστές. Ενότητα 8: Συντακτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση με το Εργαλείο BISON

Σύνταξη & Συντακτική Ανάλυση

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 11: Μη Ασυμφραστικές Γλώσσες

«Τεχνογλωσσία VIII» Εξαγωγή πληροφοριών από κείμενα

Υλοποίηση ΣΑ με το bison

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Υλοποίηση ΛΑ με το flex

Προγραμματισμός Ι (ΗΥ120)

Παρουσίαση του εργαλείου BISON

Θεωρία Υπολογισμού και Πολυπλοκότητα

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (3)

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Σειρά Προβλημάτων 3 Λύσεις

Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις

Εισαγωγή. Γλώσσες προγραμματισμού Μεταγλωττιστές Αναγκαιότητα και ιστορική αναδρομή

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Τεχνητή Νοημοσύνη. 21η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Syntax Analysis Part IV

Τι είναι το yacc. Δομή ενός αρχείου yacc. Πρόλογος. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο. Ο yacc είναι ένας γενικού σκοπού parser generator.

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ.

Top Down Bottom Up. Συντακτική Ανάλυση. Συντακτική Ανάλυση για Γραµµατικές χωρίς Συµφραζόµενα (top-down - Earley)

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Γραµµατικές για Κανονικές Γλώσσες

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Λογική. Δημήτρης Πλεξουσάκης

Εισαγωγή στην Επιστήμη των Υπολογιστών

Ασκήσεις μελέτης της ενότητας «Συντακτική Ανάλυση»

ΓΛΩΣΣΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΣΥΝΤΑΞΗ: ΟΡΘΟΛΟΓΙΚΗ ΠΡΟΣΕΓΓΙΣΗ (FORMAL SYNTAX)

Ασκήσεις μελέτης της ενότητας «Συντακτική Ανάλυση»

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Συντακτική Ανάλυση

ιαφάνειες παρουσίασης #11

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 10: Αυτόματα Στοίβας II

Τυπικές Γλώσσες. και Μεταφραστές. Γιώργος Μανής

Ανάπτυξη και Σχεδίαση Λογισμικού

Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών (Κοζάνη) Χειμ. Εξ '15

Μεταγλωττιστές. Ενότητα 3: Τυπικές γλώσσες (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 8 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Σειρά Προβλημάτων 3 Λύσεις

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2) Ισοδυναµία CFG και PDA. Σε αυτό το µάθηµα. Αυτόµατα Στοίβας Pushdown Automata

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Σημασιολογική Ανάλυση

Θεωρία Υπολογισμού και Πολυπλοκότητα

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ : Κ. ΠΕΚΜΕΣΤΖΗ

ιαφάνειες παρουσίασης #2

Transcript:

Κεφάλαιο 2: Τυπικές γλώσσες (μέρος 2ο) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 47 / 216

Γλώσσες χωρίς συμφραζόμενα (i) Γραμματικές χωρίς συμφραζόμενα: Σε κάθε παραγωγή ένα μη τερματικό σύμβολο αντικαθίσταται, βάσει ενός κανόνα Πολλές διαφορετικές παραγωγές διαφέρουν μόνο στη σειρά των αντικαταστάσεων Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 48 / 216

Γλώσσες χωρίς συμφραζόμενα (i) Γραμματικές χωρίς συμφραζόμενα: Σε κάθε παραγωγή ένα μη τερματικό σύμβολο αντικαθίσταται, βάσει ενός κανόνα Πολλές διαφορετικές παραγωγές διαφέρουν μόνο στη σειρά των αντικαταστάσεων Αριστερότερη / δεξιότερη παραγωγή (leftmost / rightmost derivation) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 48 / 216

Γλώσσες χωρίς συμφραζόμενα (i) Γραμματικές χωρίς συμφραζόμενα: Σε κάθε παραγωγή ένα μη τερματικό σύμβολο αντικαθίσταται, βάσει ενός κανόνα Πολλές διαφορετικές παραγωγές διαφέρουν μόνο στη σειρά των αντικαταστάσεων Αριστερότερη / δεξιότερη παραγωγή (leftmost / rightmost derivation) Συντακτικά δέντρα (parse trees) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 48 / 216

Γλώσσες χωρίς συμφραζόμενα (ii) a c c b b a Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 49 / 216

Γλώσσες χωρίς συμφραζόμενα (ii) Μία παραγωγή a c a b c ac b c ac ab c acab c acabac a c c b b a Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 49 / 216

Γλώσσες χωρίς συμφραζόμενα (ii) Μία παραγωγή a c a b c ac b c ac ab c acab c acabac Αριστερότερη παραγωγή a a b c ac b c ac b c acab c acabac a c c b b a Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 49 / 216

Γλώσσες χωρίς συμφραζόμενα (ii) Μία παραγωγή a c a b c ac b c ac ab c acab c acabac Αριστερότερη παραγωγή a a b c ac b c ac b c acab c acabac Δεξιότερη παραγωγή a c a ac a bac ac bac ac abac acabac a c c b b a Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 49 / 216

Γλώσσες χωρίς συμφραζόμενα (ii) Μία παραγωγή a c a b c ac b c ac ab c acab c acabac Αριστερότερη παραγωγή a a b c ac b c ac b c acab c acabac Δεξιότερη παραγωγή a c a ac a bac ac bac ac abac acabac a c c b b a S a A B c c A S B b a ε a Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 49 / 216

Διφορούμενες γραμματικές (i) Δύο γραμματικές είναι ισοδύναμες όταν παράγουν την ίδια γλώσσα. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 50 / 216

Διφορούμενες γραμματικές (i) Δύο γραμματικές είναι ισοδύναμες όταν παράγουν την ίδια γλώσσα. Μια γραμματική είναι διφορούμενη (ambiguous) αν υπάρχουν δύο ή περισσότερα συντακτικά δέντρα για την ίδια παραγόμενη συμβολοσειρά Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 50 / 216

Διφορούμενες γραμματικές (i) Δύο γραμματικές είναι ισοδύναμες όταν παράγουν την ίδια γλώσσα. Μια γραμματική είναι διφορούμενη (ambiguous) αν υπάρχουν δύο ή περισσότερα συντακτικά δέντρα για την ίδια παραγόμενη συμβολοσειρά Γραμματικές και γλώσσες εγγενώς διφορούμενες (inherently ambiguous) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 50 / 216

Διφορούμενες γραμματικές (i) Δύο γραμματικές είναι ισοδύναμες όταν παράγουν την ίδια γλώσσα. Μια γραμματική είναι διφορούμενη (ambiguous) αν υπάρχουν δύο ή περισσότερα συντακτικά δέντρα για την ίδια παραγόμενη συμβολοσειρά Γραμματικές και γλώσσες εγγενώς διφορούμενες (inherently ambiguous) Χρήση διφορούμενων γραμματικών στην περιγραφή της σύνταξης γλωσσών προγραμματισμού Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 50 / 216

Διφορούμενες γραμματικές Παράδειγμα: ξεκρέμαστο if (dangling if) (ii) stmt if cond stmt else stmt if cond stmt s1 s2 cond c1 c2 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 51 / 216

Διφορούμενες γραμματικές Παράδειγμα: ξεκρέμαστο if (dangling if) (ii) stmt if cond stmt else stmt if cond stmt s1 s2 cond c1 c2 Διφορούμενο: σε ποιο if αντιστοιχεί το else; if c1 if c2 s1 else s2 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 51 / 216

Διφορούμενες γραμματικές Παράδειγμα: ξεκρέμαστο if (dangling if) (ii) stmt if cond stmt else stmt if cond stmt s1 s2 cond c1 c2 Διφορούμενο: σε ποιο if αντιστοιχεί το else; if c1 if c2 s1 else s2 stmt if cond stmt c1 if cond stmt else stmt c2 s1 s2 if c1 if c2 s1 else s2 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 51 / 216

Διφορούμενες γραμματικές Παράδειγμα: ξεκρέμαστο if (dangling if) (ii) stmt if cond stmt else stmt if cond stmt s1 s2 cond c1 c2 Διφορούμενο: σε ποιο if αντιστοιχεί το else; if c1 if c2 s1 else s2 stmt stmt if cond stmt if cond stmt else stmt c1 if cond stmt else stmt c1 if cond stmt s2 c2 s1 s2 c2 s1 if c1 if c2 s1 else s2 if c1 if c2 s1 else s2 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 51 / 216

Τρόποι παράστασης γραμματικών (i) Backus-Naur Form (BNF) Σύμβολο στους κανόνες Μη τερματικά σύμβολα σε γωνιακές παρενθέσεις, π.χ. expr Σύμβολο για διάζευξη Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 52 / 216

Τρόποι παράστασης γραμματικών (i) Backus-Naur Form (BNF) Σύμβολο στους κανόνες Μη τερματικά σύμβολα σε γωνιακές παρενθέσεις, π.χ. expr Σύμβολο για διάζευξη unsigned-number integer-part dec-fraction exp-part integer-part dec-fraction exp-part sign digit integer-part digit integer-part E sign integer-part e sign integer-part digit 0 1 2 3 4 5 6 7 8 9 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 52 / 216

Τρόποι παράστασης γραμματικών (ii) Extended Backus-Naur Form Τερματικά σύμβολα σε εισαγωγικά Παρενθέσεις για ομαδοποίηση Αγκύλες για προαιρετικά τμήματα Σύμβολα και για επανάληψη (EBNF) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 53 / 216

Τρόποι παράστασης γραμματικών (ii) Extended Backus-Naur Form Τερματικά σύμβολα σε εισαγωγικά Παρενθέσεις για ομαδοποίηση Αγκύλες για προαιρετικά τμήματα Σύμβολα και για επανάληψη (EBNF) unsigned-number digit digit E e digit digit 0 1 2 3 4 5 6 7 8 9 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 53 / 216

Τρόποι παράστασης γραμματικών (iii) Συντακτικά διαγράμματα Τερματικά σύμβολα σε οβάλ Μη τερματικά σύμβολα σε ορθογώνια Διαδοχή συμβόλων (παράθεση) με βέλη Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 54 / 216

Τρόποι παράστασης γραμματικών (iii) Συντακτικά διαγράμματα Τερματικά σύμβολα σε οβάλ Μη τερματικά σύμβολα σε ορθογώνια Διαδοχή συμβόλων (παράθεση) με βέλη unsigned-number E + digit. digit digit e Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 54 / 216

Κεφάλαιο 4: Συντακτική ανάλυση Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 55 / 216

Συντακτική ανάλυση Συντακτικό δέντρο (parse tree) Κατασκευάζεται με δύο τρόπους: Καθοδικά Από πάνω προς τα κάτω (top-down) δηλαδή ξεκινώντας από τη ρίζα και προχωρώντας προς τα φύλλα Ανοδικά Από κάτω προς τα πάνω (bottom-up) δηλαδή ξεκινώντας από τα φύλλα και προχωρώντας προς τη ρίζα Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 56 / 216

Top-down και bottom-up από πάνω προς τα κάτω (top-down) 1 S 2 3 11 a A B c 13 4 A b 10 12 a 5 6 c S 8 B 7 ε 9 a Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 57 / 216

Top-down και bottom-up από πάνω προς τα κάτω (top-down) 1 S από κάτω προς τα πάνω (bottom-up) 12 S 2 3 11 a A B c 13 10 a A B c 1 8 11 4 A b 10 12 a 6 A b 7 9 a 5 6 c S 8 B 2 c 5 S B 4 7 ε 9 a ε a 3 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 57 / 216

ΣΑ bottom-up (i) Η συντακτική ανάλυση ξεκινά από τα φύλλα Κάθε φορά, αναζητά: τον αριστερότερο κόμβο του δέντρου που δεν έχει ακόμα κατασκευαστεί ενώ όλα τα παιδιά του έχουν κατασκευαστεί Επαναλαμβάνει μέχρι να κατασκευαστεί η ρίζα Ελάττωση (reducing): η επιλογή των κόμβων που θα αποτελέσουν τα παιδιά ενός νέου κόμβου Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 64 / 216

ΣΑ bottom-up (ii) B B D D D D r a. b r a. b r a. b S r B B D B, D D a b B B S B B D D D D r a. b r a. b Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 65 / 216

ΣΑ bottom-up (iii) ΣΑ ολίσθησης-ελάττωσης (shift-reduce) Χρησιμοποιούν μια (αρχικά κενή) στοίβα όπου τοποθετούν σύμβολα της γραμματικής Ολίσθηση (shift): μεταφορά ενός συμβόλου από την είσοδο στην κορυφή της στοίβας Ελάττωση (reduce): αφαίρεση από την κορυφή της στοίβας του δεξιού μέλους ενός κανόνα και πρόσθεση του αριστερού μέλους Επιτυχία: η στοίβα περιέχει μόνο το και τα σύμβολα της εισόδου έχουν εξαντληθεί Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 66 / 216

ΣΑ bottom-up (iv) S r B βήμα στοίβα είσοδος κίνηση B D B, D D a b r a, b ολίσθηση r a, b ολίσθηση ra, b ελάττωση με D a r D, b ελάττωση με B D r B, b ολίσθηση (όχι ελάττωση με S r B) r B, b ολίσθηση r B,b ελάττωση με D b r B, D ελάττωση με B B, D (όχι ελάττωση με B D) r B ελάττωση με S r B S αναγνώριση Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 67 / 216

ΣΑ bottom-up (v) συµβολοσειρά εισόδου a 1 a 2... a n EOF LR( ) επόµενο σύµβολο LR(0) SLR(1) LALR(1) LR(1) s m x m... κορυφή Πίνακες ελέγχου συντακτικής ανάλυσης LR(1) s 1 ACTION NEXT x 1 Συντακτικός Αναλυτής LR(1) s 0 στοίβα Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 68 / 216