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

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

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

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

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

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

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

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

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

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

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

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

ΜΑΘΗΜΑ: Μεταγλωττιστές

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

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα. Αλέξανδρος Τζάλλας

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

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

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

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

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

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

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

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

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

Περιεχόμενα Ορισμός και λειτουργία των μηχανών Turing Θεωρία Υπολογισμού Ενότητα 20: Μηχανές Turing: Σύνθεση και Υπολογισμοί Επ. Καθ. Π. Κατσαρός Τμήμ

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Μαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Θεωρία Υπολογισμού Αλφάβητα, Γλώσσες, Κανονικές Εκφράσεις

Συστήματα Αναμονής. Ενότητα 4: Αλυσίδες Markov. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Μαθηματικά. Ενότητα 3: Εξισώσεις και Ανισώσεις 1 ου βαθμού. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Δομές Δεδομένων. Ενότητα 13: B-Δέντρα/AVL-Δέντρα. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Βάσεις Δεδομένων. Ενότητα 5: ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ ΒΑΣΗΣ ΔΕΔΟΜΕΝΩΝ. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

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

Μαθηματικά. Ενότητα 2: Διαφορικός Λογισμός. Σαριαννίδης Νικόλαος Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη)

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Σχεδίαση Δικτύων Υπολογιστών

Ποσοτικές Μέθοδοι στη Διοίκηση Επιχειρήσεων ΙΙ Σύνολο- Περιεχόμενο Μαθήματος

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

Μαθηματικά. Ενότητα 12: Ακρότατα Συνάρτησης Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Δομές Δεδομένων. Ενότητα 11: Τεχνικές Κατακερματισμού. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

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

Ειδικά Θέματα Προγραμματισμού

Δομημένος Προγραμματισμός

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Μαθηματικά. Ενότητα 6: Ασκήσεις Ορίων Συνάρτησης. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

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

Λογική. Δημήτρης Πλεξουσάκης. Ασκήσεις 2ου Φροντιστηρίου: Προτασιακός Λογισμός: Κανονικές Μορφές, Απλός Αλγόριθμος Μετατροπής σε CNF/DNF, Άρνηση

ΗΛΕΚΤΡΟΤΕΧΝΙΑ Ενότητα 7:

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

{ int a = 5; { int b = 7; a = b + 3;

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

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

Συστήματα Αναμονής. Ενότητα 9: Ανέλιξη Γέννησης - Θανάτου. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Οργανωσιακή Συμπεριφορά Ενότητα 1: Η έννοια της οργάνωσης και διοίκησης

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

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

Οικονομικά Μαθηματικά

Μαθηματικά. Ενότητα 2: Δεκαδικοί αριθμοί, κλάσματα, δυνάμεις, ρίζες και ποσοστά. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Στατιστική Ι. Ενότητα 2: Στατιστικά Μέτρα Διασποράς Ασυμμετρίας - Κυρτώσεως. Δρ. Γεώργιος Κοντέος Τμήμα Διοίκησης Επιχειρήσεων Γρεβενών

Λογική. Φροντιστήριο 3: Συνεπαγωγή/Ισοδυναμία, Ταυτολογίες/Αντινομίες, Πλήρης Αλγόριθμος Μετατροπής σε CNF

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

Τίτλος Μαθήματος: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΑΝΑΛΥΣΗ ΑΛΓΟΡΙΘΜΩΝ

Διαχείριση Χρόνου & Δίκτυα στη Διοίκηση Έργων. Κηρυττόπουλος Κωνσταντίνος Επ. Καθηγητής ΕΜΠ

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 8 : Αυτόματα NFA - DFA. Αλέξανδρος Τζάλλας

ΜΑΘΗΜΑ: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Μαθηματικά. Ενότητα 1: Οι Αριθμοί. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

Μαθηματικά. Ενότητα 13: Κυρτότητα Συνάρτησης Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

ΘΕΩΡΙΑ ΠΑΙΓΝΙΩΝ. Ενότητα 7: Τέλεια ισορροπία Nash για υποπαίγνια. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

Μοντελοποίηση Λογικών Κυκλωμάτων

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Λειτουργικά Συστήματα

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

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

Transcript:

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

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

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Συντακτική ανάλυση (Μέρος 2 ο )

Σκοποί ενότητας Σκοπός της ενότητας είναι η περιγραφή της συντακτικής ανάλυσης. 5

Περιεχόμενα ενότητας (1/3) Ανοδική ανάλυση Γενικά. Ανοδική ανάλυση ώθησης / απλοποίησης. Ανάλυση LR (Left to- right/reversed Rightmost derivation). Αναλυτής LR ώθησης απλοποίησης. Πίνακες ανάλυσης LR(1). Συγκρούσεις ενεργειών. 6

Περιεχόμενα ενότητας (2/3) Παραλλαγές ανάλυσης LR: LR(0). Παραλλαγές ανάλυσης LR: SLR(1). Παραλλαγές ανάλυσης LR: LALR(1). Γλώσσες χωρίς συμφραζόμενα. Ανάνηψη λαθών. Ανάνηψη «πανικού» στην ανάλυση LL(1). 7

Περιεχόμενα ενότητας (3/3) Εντοπισμός λάθους στην ανάλυση LR. 8

Ανοδική ανάλυση - Γενικά (1/5) Η συμβολοσειρά εισόδου. Σταδιακά απλοποιείται στο σύμβολο της αρχής της γραμματικής. Καθώς διαβάζεται από αριστερά προς τα δεξιά παράλληλα με την εφαρμογή κανόνων για τα σύμβολα. Που έχουν ήδη διαβασθεί. 9

Ανοδική ανάλυση - Γενικά (2/5) Η αντιστροφή της απλοποίησης που εκτελεί μία διαδικασία ανοδικής ανάλυσης. Παραγωγή δεξιών προτασιακών μορφών. Το δένδρο αναπτύσσεται βήμα βήμα. Από αριστερά προς τα δεξιά. Από τα φύλλα προς τη ρίζα. 10

Ανοδική ανάλυση - Γενικά (3/5) Κάθε διαδικασία ανοδικής ανάλυσης. Συντονίζει την εκτέλεση ενεργειών ώθησης στη στοίβα, απλοποίησης και αποδοχής. 11

Ανοδική ανάλυση - Γενικά (4/5) Ενέργεια ώθησης στην στοίβα. Ώθηση της τρέχουσας λεξικής μονάδας στη στοίβα κι ανάγνωση της επόμενης. Για το σύμβολο που ωθείται: Δημιουργείται ο σχετικός κόμβος με τη μορφή νέου δένδρου. Στα δεξιά του δάσους.» Το δάσος αποτελείται από δένδρα που δημιουργήθηκαν στα προηγούμενα βήματα της ανάλυσης. 12

Ανοδική ανάλυση - Γενικά (5/5) Ενέργεια απλοποίησης. Σε μία ενέργεια απλοποίησης που βασίζεται σε έναν κανόνα X p p... της γραμματικής. 1 Δημιουργείται ένας νέος κόμβος για το μη τερματικό σύμβολο Χ. p n Οι ρίζες που βρίσκονται στα δεξιά του δάσους, μετατρέπονται σε απογόνους του νέου κόμβου. 2 13

Ανοδική ανάλυση ώθησης / απλοποίησης (1/5) S = έκφραση. έκφραση = έκφραση + αριθμός αριθμός. Ανοδική ανάλυση της συμβολοσειράς 36+2. 14

Ανοδική ανάλυση ώθησης / απλοποίησης (2/5) Πίνακας 1. Ανοδική ανάλυση της συμβολοσειράς 36+2. Στοίβα Συμβολοσειρά Ενέργεια $ 36+2$ ώθηση $ αριθμός +2$ απλοποίηση κατά έκφραση = αριθμός $ έκφραση +2$ ώθηση $ έκφραση + 2$ ώθηση $ έκφραση + αριθμός $ απλοποίηση κατά έκφραση = έκφραση + αριθμός $ έκφραση $ απλοποίηση κατά S = έκφραση $ S $ αποδοχή 15

Ανοδική ανάλυση ώθησης / απλοποίησης (3/5) 1. S έκφραση. [έκφραση = έκφραση + αριθμός]. 2. S έκφραση + αριθμός. [έκφραση = αριθμός]. 3. S αριθμός + αριθμός. 16

Ανοδική ανάλυση ώθησης / απλοποίησης (4/5) Σχήμα 1. Ανοδική ανάλυση ώθησης / απλοποίησης, (πηγή: διδάσκων, 2014). 17

Ανοδική ανάλυση ώθησης / απλοποίησης (5/5) Σύνολο συμβόλων που περιέχονται στη στοίβα σε κάποιο βήμα της ανάλυσης. Είναι οι ρίζες των δένδρων που σχηματίζονται. Χαρακτηρίζονται ως το ζωτικό πρόθεμα μίας δεξιάς προτασιακής μορφής. Ένα σύνολο συμβόλων ονομάζεται λαβή απλοποίησης αν: Βρίσκεται στην κορυφή της στοίβας. Ταιριάζει με το δεξί μέρος ενός κανόνα παραγωγής. 18

Παράδειγμα ανοδικής ανάλυσης ώθησης / απλοποίησης (1/2) Ζωτικό πρόθεμα της δεξιάς προτασιακής μορφής αριθμός + αριθμός: Στο βήμα 1 είναι το ε. Στο βήμα 2 είναι ο αριθμός. Το αριθμός + δεν είναι ζωτικό πρόθεμα. Λαβή απλοποίησης είναι ο αριθμός. 19

Παράδειγμα ανοδικής ανάλυσης ώθησης / απλοποίησης (2/2) Ζωτικό πρόθεμα της δεξιάς προτασιακής μορφής έκφραση + αριθμός: Στο βήμα 1 είναι το έκφραση. Στο βήμα 2 είναι το έκφραση +. Στο βήμα 3 είναι το έκφραση + αριθμός. Το έκφραση + αριθμός αποτελεί λαβή απλοποίησης. 20

Ανοδική ανάλυση ώθησης / απλοποίησης - Συνέχεια (1/2) Διαδικασίες ώθησης απλοποίησης. Προτεραιότητας τελεστών. Απλής προήγησης. LR. Οι γλώσσες LR είναι προσδιοριστικές. Υπάρχει αυτόματο στοίβας που τις αναγνωρίζει με προσδιοριστικό τρόπο. 21

Ανοδική ανάλυση ώθησης / απλοποίησης - Συνέχεια (2/2) Τεχνικές ανάλυσης LR. Δεν αναγνωρίζουν πάντα τις προτάσεις της γλώσσας με προσδιοριστικό τρόπο. Προβλήματα που ενδέχεται να προκύψουν. Σύγκρουση ώθησης απλοποίησης. Πρόβλημα μετέωρου else. Σύγκρουση απλοποίησης απλοποίησης. 22

Ανάλυση LR (1/11) Οι γραμματικές LR. Υπερσύνολο των γραμματικών. Αναλύονται με χρήση της τεχνικής LL(1). Πλεονεκτήματα. Άμεσος εντοπισμός λαθών. 23

Ανάλυση LR (2/11) Πλεονεκτήματα (Συνέχεια). Η πιο γενική ανάλυση ώθησης απλοποίησης. Υλοποιείται χωρίς οπισθοδρόμηση. Έχει παρόμοια απόδοση με τις υπόλοιπες τεχνικές της ίδιας κατηγορίας. 24

Ανάλυση LR (3/11) Διαδικασία καθορισμού της επόμενης ενέργειας. Ο αναλυτής χρησιμοποιεί έναν αριθμό. Ο αριθμός αυτός, συνοδεύει τις ρίζες των δένδρων του δάσους. Ονομάζεται κατάσταση. Η κατάσταση της ρίζας του δένδρου που βρίσκεται στα δεξιά του δάσους ονομάζεται τρέχουσα κατάσταση. 25

Ανάλυση LR (4/11) Στο αριστερό μέρος του δάσους. Υπάρχει η αρχική κατάσταση. Χρησιμοποιείται για τον καθορισμό της πρώτης ενέργειας του αναλυτή. Οι ενέργειες ενός αναλυτή LR. Εξαρτώνται από την τρέχουσα κατάστασή του. 26

Ανάλυση LR (5/11) Στην ενέργεια της ώθησης Η κατάσταση της ρίζας του νέου δένδρου Καθορίζεται από την τρέχουσα κατάσταση και από το σύμβολο Που ωθείται στη στοίβα (και στο δάσος) 27

Ανάλυση LR (6/11) Σε ενέργεια απλοποίησης Δημιουργείται ένας νέος κόμβος για το μη τερματικό σύμβολο Στο οποίο αναφέρεται ο κανόνας και Συνδέονται σε αυτόν οι ρίζες του δάσους που βρίσκονται δεξιότερα Που αντιστοιχούν στα σύμβολα του δεξιού μέρους του κανόνα 28

Ανάλυση LR (7/11) Σε ενέργεια απλοποίησης (Συνέχεια). Στη συνέχεια διαγράφονται οι καταστάσεις που συνοδεύουν τις n ρίζες. Η κατάσταση που επισυνάπτεται στη νέα ρίζα. Καθορίζεται με βάση. Την κατάσταση της ρίζας που βρίσκεται αμέσως πιο αριστερά. Και το μη τερματικό σύμβολο του νέου κόμβου. 29

Ανάλυση LR (8/11) Για τον καθορισμό των ενεργειών της ανάλυσης. Χρησιμοποιούμε έναν πίνακα ενεργειών και έναν πίνακα μεταβάσεων. 30

Ανάλυση LR (9/11) Πίνακας 2. Πίνακας ενεργειών LR(1) ανάλυσης της γραμματικής του προηγούμενου παραδείγματος. αριθμός + $ κατάσταση 0 ώθηση κατάσταση 1 Ώθηση αποδοχή κατάσταση 2 απλοποίηση απλοποίηση (έκφραση = αριθμός) (έκφραση = αριθμός) κατάσταση 3 κατάσταση 4 ώθηση απλοποίηση (έκφραση = έκφραση + αριθμός) απλοποίηση (έκφραση = έκφραση + αριθμός) 31

Ανάλυση LR (10/11) Πίνακας 3. Πίνακας μεταβάσεων LR(1) ανάλυσης της γραμματικής του παραδείγματος. έκφραση αριθμός + κατάσταση 0 κατάσταση 1 κατάσταση 2 κατάσταση 1 κατάσταση 3 κατάσταση 2 κατάσταση 3 κατάσταση 4 32

Ανάλυση LR (11/11) Σχήμα 2. Ανάλυση LR, (πηγή: διδάσκων, 2014). 33

Αναλυτής LR ώθησης - απλοποίησης (1/16) Σχήμα 3. Αναλυτής LR ώθησης απλοποίησης, (πηγή: διδάσκων, 2014). 34

Αναλυτής LR ώθησης - απλοποίησης (2/16) 35

Αναλυτής LR ώθησης - απλοποίησης (3/16) Μια γραμματική είναι LR(k) αν δοθείσης μιας δεξιάς παραγωγής. S 0 1 n-1 n πρόταση 36

Αναλυτής LR ώθησης - απλοποίησης (4/16) Για κάθε δεξιά προτασιακή μορφή i μπορεί να αναγνωριστεί μία λαβή απλοποίησης. Αντίστοιχα, μπορεί να καθοριστεί ένας κανόνας απλοποίησης. Με την ανάγνωση της i από αριστερά προς τα δεξιά. Προχωρώντας το πολύ k σύμβολα πιο δεξιά από το τέλος της λαβής απλοποίησης της i. 37

Αναλυτής LR ώθησης - απλοποίησης (5/16) Αν μία γραμματική είναι LR(?). Υπάρχει μία και μόνο μία δεξιά παραγωγή της κάθε πρότασης. Στο πάνω μέρος της στοίβας. Είτε υπάρχουν όλες οι ενεργές λαβές απλοποίησης που περιλαμβάνουν την κορυφή της στοίβας. Είτε ωθούνται σύμβολα μέχρι να αποτελεί η κορυφή το δεξί άκρο μιας λαβής απλοποίησης. 38

Αναλυτής LR ώθησης - απλοποίησης (6/16) Γλώσσα λαβών απλοποίησης. Είναι κανονική. Είναι δυνατή η κατασκευή ενός προσδιοριστικού πεπερασμένου αυτόματου. Που να αναγνωρίζει λαβές απλοποίησης. Πίνακες ενεργειών και μετάβασης. Εκφράζουν το αυτόματο. 39

Αναλυτής LR ώθησης - απλοποίησης (7/16) Νέες καταστάσεις του αυτόματου. Εισάγονται στη στοίβα. Τελικές καταστάσεις του αυτόματου. Αντιστοιχούν σε ενέργειες απλοποίησης. 40

Αναλυτής LR ώθησης - απλοποίησης (8/16) Δημιουργία πινάκων ενεργειών και μεταβάσεων. Σχήμα 4. Δημιουργία πινάκων ενεργειών και μεταβάσεων, (πηγή: διδάσκων, 2014). 41

Αναλυτής LR ώθησης - απλοποίησης (9/16) Δημιουργία πινάκων ενεργειών και μεταβάσεων (χωρίς yacc); Κατασκευή του αυτόματου αναγνώρισης λαβών απλοποίησης. Η κατασκευή γίνεται από τη γραμματική. Καθορισμός των πινάκων ενεργειών και μεταβάσεων. Αν η κατασκευή του αυτομάτου είναι επιτυχής. Η γραμματική είναι γραμματική LR(?). 42

Αναλυτής LR ώθησης - απλοποίησης (10/16) Δημιουργία πινάκων ενεργειών και μεταβάσεων (χωρίς yacc); (Συνέχεια) Αλλιώς είναι πιθανό να προκύψουν. Συγκρούσεις ώθησης απλοποίησης. Συγκρούσεις απλοποίησης απλοποίησης. 43

Αναλυτής LR ώθησης - απλοποίησης (11/16) Δημιουργία πινάκων ενεργειών και μεταβάσεων (χωρίς yacc); (Συνέχεια) Τότε. Θα πρέπει να εφαρμοσθεί μία άλλη κατασκευή LR(?). Ή να κατασκευάσουμε τον αναλυτή. Ώστε σε μία περίπτωση σύγκρουσης να επιλέγει κάθε φορά μία συγκεκριμένη ενέργεια. 44

Αναλυτής LR ώθησης - απλοποίησης (12/16) Δημιουργία πινάκων ενεργειών και μεταβάσεων (χωρίς yacc); (Συνέχεια) Οι αναλυτές του byacc. Όταν έχουμε σύγκρουση ώθησης απλοποίησης. Εκτελούν κάθε φορά την ώθηση. 45

Αναλυτής LR ώθησης - απλοποίησης (13/16) Δημιουργία πινάκων ενεργειών και μεταβάσεων (χωρίς yacc); (Συνέχεια) Χρησιμοποίηση στοιχείων LR(k). Για την κωδικοποίηση του συνόλου των κανόνων. Που μπορεί το δεξί τους μέρος να αποτελέσει λαβή απλοποίησης σε μία δεδομένη κατάσταση. 46

Αναλυτής LR ώθησης - απλοποίησης (14/16) Δημιουργία πινάκων ενεργειών και μεταβάσεων (χωρίς yacc); (Συνέχεια) Για κάθε κατάσταση πραγματοποιείται υπολογισμός των goto(s, α) και closure(s). Καταγράφονται οι καταστάσεις και οι μεταβάσεις του αυτόματου. Συμπληρώνονται οι πίνακες ενεργειών και μεταβάσεων. 47

Αναλυτής LR ώθησης - απλοποίησης (15/16) Στοιχείο LR(k) είναι ένα ζεύγος [A, B]. A είναι μία παραγωγή α βγδ με ένα κάπου στο δεξί μέρος. B σύμβολα εισόδου με μήκος k (τερματικά ή $). Παράδειγμα: [α β γδ, a]. 48

Αναλυτής LR ώθησης - απλοποίησης (16/16) Η τρέχουσα θέση αναπαριστά την κορυφή της στοίβας. Το δείχνει την τρέχουσα θέση. Στοιχεία LR(0) [ α β γδ]. Δεν υπάρχουν σύμβολα εισόδου. Στοιχεία LR(2) [ α β γδ, a b]. Υπάρχουν δύο σύμβολα εισόδου. 49

Πίνακες ανάλυσης LR(1) (1/17) Η παραγωγή α βγδ, με σύμβολο εισόδου a, παράγει τα παρακάτω 4 στοιχεία LR(1). 1. [, a]. 2. [, a]. 3. [, a]. 4. [, a]. Το σύνολο των στοιχείων LR(1) μίας γραμματικής είναι πεπερασμένο. 50

Πίνακες ανάλυσης LR(1) (2/17) Τα καταγράφουμε έτσι ώστε να οδηγούμαστε στη σωστή απλοποίηση. Αν το βρίσκεται σε ενδιάμεση θέση σε ένα μόνο στοιχείο δεν παίζει κάποιο ιδιαίτερο ρόλο, π.χ.: Στο [, a]. Το σύμβολο εισόδου δεν έχει ιδιαίτερη σημασία. Στο [, a]. Το σύμβολο a οδηγεί στην απλοποίηση. 51

Πίνακες ανάλυσης LR(1) (3/17) Σε μία γραμματική LR(1). Ένα σύμβολο εισόδου είναι αρκετό για να καθοριστεί η επόμενη ενέργεια. 52

Πίνακες ανάλυσης LR(1) (4/17) Καταστάσεις προσδιοριστικού αυτόματου αναγνώρισης λαβών απλοποίησης. Ορίζονται ως σύνολα στοιχείων, I 0, I 1,..., I n. Εισάγεται ένα νέο σύμβολο S και μία παραγωγή S S. S είναι η αρχή της γραμματικής. Η αρχική κατάσταση (I 0 ) περιλαμβάνει τα στοιχεία. [S S, $] και όλα τα ισοδύναμα που δίνονται ως closure(i 0 ). 53

Πίνακες ανάλυσης LR(1) (5/17) Για κάθε σύνολο I k και κάθε σύμβολο α, προσδιορίζεται το σύνολο της goto(i k, α). Καταγράφονται όλες οι μεταβάσεις goto( ). Συμπληρώνονται οι πίνακες ενεργειών και μεταβάσεων. 54

Πίνακες ανάλυσης LR(1) (6/17) Υπολογισμός closure(i). Στο σύνολο I προστίθεται όλα τα στοιχεία που προκύπτουν από τα ήδη υπάρχοντα στοιχεία που βρίσκονται στο Ι. Κάθε στοιχείο [, a] δημιουργεί όλα τα [, x]. Για κάθε παραγωγή με στα αριστερά και για όλα τα x FIRST( a). Όταν συμπεριληφθούν όλα τα στοιχεία της παραγωγής. Εφαρμόζοντας την ίδια πράξη, περιλαμβάνονται και όσα προκύπτουν από αυτά. 55

Πίνακες ανάλυσης LR(1) (7/17) 56

Πίνακες ανάλυσης LR(1) (8/17) Υπολογισμός goto(i, x). Υπολογίζεται η νέα κατάσταση που ο αναλυτής προσεγγίζει. Αν αυτός βρίσκεται στην κατάσταση I και αναγνωρίζει το τερματικό x. goto( { [, a] }, ). Παράγεται κατάσταση που περιλαμβάνει το [,a]. Αν δεν υπάρχει. Δημιουργείται και το closure( [, a] ) και περιλαμβάνεται σε αυτή. 57

Πίνακες ανάλυσης LR(1) (9/17) Υπολογισμός goto(i, x). Υπολογίζεται η νέα κατάσταση που ο αναλυτής προσεγγίζει. Αν αυτός βρίσκεται στην κατάσταση I και αναγνωρίζει το τερματικό x. goto( { [, a] }, ). Παράγεται κατάσταση που περιλαμβάνει το [,a]. 58

Πίνακες ανάλυσης LR(1) (10/17) Υπολογίζεται η νέα κατάσταση που ο αναλυτής προσεγγίζει (Συνέχεια). Αν δεν υπάρχει. Δημιουργείται και το closure( [, a] ) και περιλαμβάνεται σε αυτή. 59

Πίνακες ανάλυσης LR(1) (11/17) 60

Πίνακες ανάλυσης LR(1) (12/17) Αλγόριθμος κατασκευής αυτόματου. Ξεκινάει από το I 0 = closure([s S, $]). Συνεχής δημιουργία νέων καταστάσεων. Μέχρι τη στιγμή που δεν θα είναι δυνατή η δημιουργία άλλων. 61

Πίνακες ανάλυσης LR(1) (13/17) 62

Πίνακες ανάλυσης LR(1) (14/17) Αλγόριθμοι κατασκευής πινάκων lr(1). 63

Πίνακες ανάλυσης LR(1) (15/17) Αλγόριθμοι κατασκευής πινάκων lr(1). 64

Πίνακες ανάλυσης LR(1) (16/17) Αλγόριθμοι κατασκευής πινάκων lr(1). 65

Πίνακες ανάλυσης LR(1) (17/17) Δημιουργία πινάκων. 66

Συγκρούσεις ενεργειών (1/3) Έστω ότι η κατάσταση s περιέχει [ a, b] και [, a]. Το πρώτο στοιχείο παράγει ώθηση και το δεύτερο απλοποίηση. Δεν μπορούμε στο ΠΙΝΑΚΑΣ_ΕΝΕΡΓΕΙΩΝ[s,a] να συμπληρώσουμε δύο ενέργειες. Σύγκρουση ώθησης απλοποίησης. 67

Συγκρούσεις ενεργειών (2/3) Μπορούμε. Να αλλάξουμε τη γραμματική. Ή αυθαίρετα να επιλέξουμε την εκτέλεση ώθησης. Κάτι που έχει αποδειχθεί ότι συνήθως αποδίδει τη σωστή σημασία π.χ. πρόβλημα μετέωρου else. Ή να επιλέξουμε κάποια άλλη ανάλυση LR. Η γραμματική δεν είναι LR(1). 68

Συγκρούσεις ενεργειών (3/3) Έστω ότι η κατάσταση s περιέχει [, a] και [, a]. Κάθε στοιχείο παράγει απλοποίηση αλλά με διαφορετικό κανόνα. Δεν μπορούμε στο ΠΙΝΑΚΑΣ_ΕΝΕΡΓΕΙΩΝ[s,a] να συμπληρώσουμε δύο ενέργειες. Σύγκρουση απλοποίησης απλοποίησης. Ένδειξη λάθους στη γραμματική. Η γραμματική δεν είναι LR(1). 69

Παραλλαγές ανάλυσης LR: LR(0) (1/4) Κλείσιμο συνόλου στοιχείων LR(0). 70

Παραλλαγές ανάλυσης LR: LR(0) (2/4) Κατασκευή συνόλων στοιχείων LR(0). 71

Παραλλαγές ανάλυσης LR: LR(0) (3/4) Μεταβάσεις συνόλων στοιχείων LR(0). 72

Παραλλαγές ανάλυσης LR: LR(0) (4/4) Ίδιοι αλγόριθμοι με την ανάλυση LR(1). Μοναδική διαφορά. Στα στοιχεία LR(0) δεν υπάρχει σύμβολο εισόδου για το λόγο αυτό, δεν παράγονται πολλά στοιχεία σε κάθε σύνολο. Παράγονται λιγότερες καταστάσεις από την ανάλυση LR(0). Δεν αναγνωρίζονται όλες οι γραμματικές που αναγνωρίζει η LR(1). Αυξημένη πιθανότητα συγκρούσεων ανάλυσης. 73

Παραλλαγές ανάλυσης LR: SLR(1) (1/2) Ο αλγόριθμος SLR(1). Για να καθορίσει πότε θα γίνει απλοποίηση. Χρησιμοποιεί και τα σύνολα FOLLOW. Οι αναλυτές SLR(1). Έχουν λιγότερες καταστάσεις από ότι οι LR(1). 74

Παραλλαγές ανάλυσης LR: SLR(1) (2/2) 75

Παραλλαγές ανάλυσης LR: LALR(1) Βασική ιδέα. (1/5) Συνένωση καταστάσεων LR(1). Κρατάμε τον πυρήνα LR(0) των στοιχείων LR(1). Αγνόηση των συμβόλων εισόδου. Αν δύο σύνολα LR(1) έχουν τον ίδιο πυρήνα. Τα συνενώνουμε κι ενημερώνουμε τους πίνακες ενεργειών και μεταβάσεων. 76

Παραλλαγές ανάλυσης LR: LALR(1) (2/5) Οι αναλυτές LALR(1) μπορούν να φτιαχτούν με δύο τρόπους. Κατασκευή των συνόλων στοιχείων LR(1) και συνένωση. Αγνοούμε τα στοιχεία με τελεία στην αρχή του δεξιού μέρους και κατασκευάζουμε πυρήνες συνόλων στοιχείων LR(0). Στη συνέχεια χρησιμοποιούμε έναν αλγόριθμο προώθησης συμβόλων εισόδου. Για να υπολογίσουμε τα σύμβολα εισόδου. 77

Παραλλαγές ανάλυσης LR: LALR(1) (3/5) Η δεύτερη προσέγγιση είναι πιο αποδοτική. Επειδή αποφεύγει τη δημιουργία μεγάλων ενδιάμεσων LR(1) πινάκων. 78

Παραλλαγές ανάλυσης LR: LALR(1) (4/5) Ένας αναλυτής LALR(1) για μια γραμματική G έχει τον ίδιο αριθμό καταστάσεων. Με τον αντίστοιχο αναλυτή SLR(1). Αν ένας αναλυτής LR(1) για μια γραμματική G δεν παρουσιάζει συγκρούσεις ώθησης απλοποίησης. Δεν θα έχει συγκρούσεις ώθησης απλοποίησης και ο αναλυτής LALR(1). Ένας αναλυτής LALR(1) μπορεί να εμφανίζει σύγκρουση απλοποίησης απλοποίησης. Χωρίς αυτό να συμβαίνει και στον αντίστοιχο LR(1). 79

Παραλλαγές ανάλυσης LR: LALR(1) Οι αναλυτές LALR(1). (5/5) Είναι πιο γενικοί από τους SLR(1). Συγχρόνως έχουν το ίδιο μικρό χώρο καταστάσεων. Ανάλυση LALR(1) παράγουν οι γεννήτριες yacc και byacc. 80

Γλώσσες χωρίς συμφραζόμενα (1/2) Σχήμα 5. Γλώσσες χωρίς συμφραζόμενα (1), (πηγή: διδάσκων, 2014). 81

Γλώσσες χωρίς συμφραζόμενα (2/2) Σχήμα 6. Γλώσσες χωρίς συμφραζόμενα (2), (πηγή: διδάσκων, 2014). 82

Ανάνηψη λαθών (1/5) Εντοπισμός λάθους όσο το δυνατόν πιο έγκαιρα. Επιλογή θέσης από όπου θα συνεχίζεται η ανάλυση. Να εντοπίζονται μόνο υπαρκτά λάθη και να μην εμφανίζονται διαδιδόμενα πλασματικά λάθη. Να αποφεύγεται η μετάπτωση του αναλυτή σε ατέρμονες βρόχους. 83

Ανάνηψη λαθών (2/5) Τεχνικές ανάνηψης λαθών. Ανάνηψη πανικού. Ανάνηψη σε επίπεδο φράσης. Κανόνες παραγωγής για λάθη. Συνολική διόρθωση. 84

Ανάνηψη λαθών (3/5) Η ανάνηψη πανικού στην αναδρομική κατάβαση. Υλοποιείται με τον καθορισμό μονάδων συγχρονισμού. Όταν ο αναλυτής εντοπίσει λάθος. Οι επόμενες μονάδες αγνοούνται. Μέχρι να εντοπιστεί μία μονάδα συγχρονισμού. Από την οποία μπορεί να συνεχίσει την ανάλυσης. 85

Ανάνηψη λαθών (4/5) Κάθε μη τερματικό σύμβολο διαθέτει τις δικές του μονάδες συγχρονισμού. Οι μονάδες συγχρονισμού επιλέγονται μέσα από τα σύνολα FOLLOW. 86

Ανάνηψη λαθών (5/5) Στην ανάλυση LL(1) έχουμε εντοπισμό λάθους. Όταν στην κορυφή της στοίβας βρίσκεται ένα μη τερματικό σύμβολο X. Τέτοιο ώστε το τρέχον σύμβολο εισόδου να μην περιλαμβάνεται στο σύνολο FIRST(X). Κι αν αυτό συμβαίνει να περιέχει το ε, ούτε στο σύνολο FOLLOW(X). 87

Ανάνηψη πανικού στην ανάλυση Ανάνηψη πανικού. LL(1) (1/4) Υλοποιείται με τον προσδιορισμό της κατάλληλης ενέργειας. Για κάθε κενή θέση στον πίνακα ανάλυσης. 88

Ανάνηψη πανικού στην ανάλυση Ενέργειες ανάνηψης. LL(1) (2/4) Αφαίρεση από τη στοίβα του συμβόλου Χ. Αγνόηση ενός αριθμού συμβόλων εισόδου. Μέχρι τον εντοπισμό μονάδας που να μπορεί να χρησιμοποιηθεί για την επανεκκίνηση της διαδικασίας ανάλυσης. Ώθηση στη στοίβα ενός νέου μη τερματικού συμβόλου. 89

Ανάνηψη πανικού στην ανάλυση LL(1) (3/4) Αφαίρεση από τη στοίβα. Όταν η τρέχουσα λεξική μονάδα είναι η $. Όταν η τρέχουσα λεξική μονάδα ανήκει στο FOLLOW(X). Αγνόηση συμβόλων. Όταν η τρέχουσα λεξική μονάδα δεν είναι η $. Και δεν ανήκει στο FIRST(X) U FOLLOW(X). 90

Ανάνηψη πανικού στην ανάλυση Ώθηση στη στοίβα. LL(1) (4/4) Όταν συμβεί να έχει αδειάσει η στοίβα. Χωρίς να έχει ολοκληρωθεί η ανάγνωση όλων των μονάδων εισόδου. Ωθείται στη στοίβα το σύμβολο της αρχής της γραμματικής. Αγνοούνται τα επόμενα σύμβολα εισόδου. Μέχρι την ανάγνωση συμβόλου, που ανήκει στο σύνολο FIRST της αρχής. 91

Ανάνηψη «πανικού» στην ανάλυση LL(1) - Συνέχεια (1/4) Πίνακας 4. Πίνακας ανάλυσης χωρίς ανάνηψη λαθών. M αριθμός + - * / ( ) $ έκφραση όρος υπ_όροι όρος υπ_όροι υπ_όροι + όρος υπ_όροι - όρος υπ_όροι ε ε όρος παράγοντ ας υπ_παραγ παράγοντας υπ_παραγ 92

Ανάνηψη «πανικού» στην ανάλυση LL(1) - Συνέχεια (2/4) Πίνακας 4 (Συνέχεια). Πίνακας ανάλυσης χωρίς ανάνηψη λαθών. M αριθμός + - * / ( ) $ υπ_παραγ παράγοντας αριθμός ε ε * παράγοντα ς υπ_παραγ / παράγοντα ς υπ_παραγ ( έκφραση ) ε ε 93

Ανάνηψη «πανικού» στην ανάλυση LL(1) - Συνέχεια (3/4) Πίνακας 5. Πίνακας ανάλυσης με ανάνηψη λαθών. έκφρασ όρος η υπ_όροι υπ_όροι αγ όρος αριθμός + - * / ( ) $ παράγον τας υπ_παρ αγ αγ αγ αγ αγ όρος υπ_όροι αφ αφ + όρος - αγ αγ αγ ε ε υπ_όρ όρος οι υπ_ό ροι αφ αφ αγ αγ παράγον αφ αφ τας υπ_παρ αγ 94

Ανάνηψη «πανικού» στην ανάλυση LL(1) - Συνέχεια (4/4) Πίνακας 5 (Συνέχεια). Πίνακας ανάλυσης με ανάνηψη λαθών. υπ_παρ αγ παράγον τας αριθμός + - * / ( ) $ αγ ε ε * παράγοντα ς υπ_παραγ / παράγοντα ς υπ_παραγ αγ ε ε αριθμός αφ αφ αφ αφ ( έκφραση ) αφ αφ αγ: Αγνόηση συμβόλων αφ: Αφαίρεση από τη στοίβα 95

Εντοπισμός λάθους στην ανάλυση LR (1/11) 1. έκφραση = έκφραση + όρος. 2. έκφραση = έκφραση όρος. 3. έκφραση = όρος. 4. όρος = όρος * παράγοντας. 5. όρος = όρος / παράγοντας. 96

Εντοπισμός λάθους στην ανάλυση LR (2/11) 6. όρος = παράγοντας. 7. παράγοντας = (έκφραση). 8. παράγοντας = αριθμός. 97

Εντοπισμός λάθους στην ανάλυση Αναγνώριση λάθους. LR (3/11) Πραγματοποιείται όταν στον πίνακα ενεργειών δεν αντιστοιχεί συγκεκριμένη ενέργεια για το τερματικό εισόδου που ακολουθεί. Το διαγνωστικό μήνυμα λάθους. Μπορεί να επιλεγεί αν εξετάσουμε τα περιεχόμενα της στοίβας. 98

Εντοπισμός λάθους στην ανάλυση Ανάνηψη πανικού. LR (4/11) Καθορίζεται ένα σύνολο μονάδων συγχρονισμού. Συνήθως αποτελείται από διαχωριστές που δηλώνουν τέλος εντολών ή άλλων δομημένων στοιχείων της γλώσσας. Όταν εντοπίζεται λάθος. Συνεχίζεται η ανάγνωση των λεξικών μονάδων εισόδου. Μέχρι τον εντοπισμό κάποιας μονάδας συγχρονισμού. 99

Εντοπισμός λάθους στην ανάλυση LR (5/11) Ανάνηψη πανικού (Συνέχεια). Ακολουθεί η σταδιακή αφαίρεση συμβόλων από τη στοίβα. Μέχρι αυτή να περιέλθει σε κατάσταση από την οποία ορίζεται συγκεκριμένη ενέργεια για το σύμβολο συγχρονισμού που εντοπίστηκε. Μετά την εκτέλεση της ενέργειας αυτής. Ο έλεγχος επανέρχεται στον αναλυτή για τη συνέχιση της διαδικασίας. 100

Εντοπισμός λάθους στην ανάλυση LR (6/11) Ανάνηψη σε επίπεδο φράσης. Πρέπει όχι απλά να εντοπισθεί το λάθος. Αλλά να γίνει και αναγνώριση του λάθους που εντοπίσθηκε. Η ανάνηψη αποβλέπει. Είτε στην τροποποίηση της κορυφής της στοίβας είτε στην τροποποίηση των συμβόλων εισόδου που προηγούνται. Για την απρόσκοπτη συνέχιση της ανάλυσης. 101

Εντοπισμός λάθους στην ανάλυση LR (7/11) Ανάνηψη σε επίπεδο φράσης (Συνέχεια). Μία προσέγγιση αυτού του τύπου. Χαρακτηρίζεται από το ρίσκο να περιέλθει η ανάλυση σε ατέρμονα βρόχο. Συνιστώνται τεχνικές. Που εγγυώνται την αφαίρεση από τη συμβολοσειρά εισόδου ή την ώθηση στη στοίβα τουλάχιστο μίας λεξικής μονάδας. Εγγυώνται το άδειασμα της στοίβας με την ολοκλήρωση της ανάγνωσης της συμβολοσειράς. 102

Εντοπισμός λάθους στην ανάλυση LR (8/11) Ανάνηψη σε επίπεδο φράσης (Συνέχεια). Δεν αφαιρούν από τη στοίβα μη τερματικά σύμβολα. Και τις αντίστοιχες καταστάσεις που έχουν ήδη αναγνωρισθεί. 103

Εντοπισμός λάθους στην ανάλυση LR (9/11) Ανάνηψη λαθών σε αναλυτές του byacc. Τροποποιούμε τη γραμματική προσθέτοντας κανόνες παραγωγής για λάθη, της μορφής: μη τερματικό: σφάλμα μονάδες_συγχρονισμού. όπου «σφάλμα» η ψευδομονάδα λάθους του byacc. 104

Εντοπισμός λάθους στην ανάλυση LR (10/11) Ανάνηψη λαθών σε αναλυτές του byacc (Συνέχεια). Μετά από τον εντοπισμό λάθους. Το byacc αφαιρεί από τη στοίβα όσα σύμβολα χρειάζεται. Ώστε να περιέλθει η στοίβα σε κατάσταση που περιέχει ένα τουλάχιστο στοιχείο προερχόμενο από κανόνα λάθους.» Με την τελεία τοποθετημένη στα αριστερά της ψευδομονάδας «σφάλμα». Στη συνέχεια ο αναλυτής ωθεί στη στοίβα τη ψευδομονάδα «σφάλμα». 105

Εντοπισμός λάθους στην ανάλυση LR (11/11) Ανάνηψη λαθών σε αναλυτές του byacc (Συνέχεια). Αν δεν έχει δηλωθεί κάποια μονάδα συγχρονισμού στον κανόνα σφάλματος, ο αναλυτής: Προχωρήσει άμεσα σε απλοποίηση σύμφωνα με αυτόν. Εκτελεί τις ενέργειες που το συνοδεύουν. Η διαδικασία συνεχίζει αγνοώντας ένα ή περισσότερα σύμβολα εισόδου. Μέχρι τον εντοπισμό εκείνου, για το οποίο ο πίνακας ενεργειών ορίζει την επόμενη ενέργεια της ανάλυσης. 106

Εντοπισμός λάθους στην ανάλυση LR - Παράδειγμα (1/2) Γραμματική αριθμητικών εκφράσεων. 107

Εντοπισμός λάθους στην ανάλυση LR - Παράδειγμα (2/2) Γράφουμε τον τελευταίο κανόνα της γραμματική μέσα στο byacc ως εξής. 108

Εντοπισμός λάθους στην ανάλυση Σημείωση. LR - Συνέχεια (1/9) Στην παραπάνω ανάλυση. Οι πίνακες της ανάλυσης είναι οι LALR(1) πίνακες. Που παράγει το byacc. Κι όχι αυτοί που χρησιμοποιήσαμε σε προηγούμενα παραδείγματα. 109

Εντοπισμός λάθους στην ανάλυση LR - Συνέχεια (2/9) Μετά την εκτέλεση απλοποίησης σύμφωνα με κανόνα λάθους. Ο αναλυτής δεν εντοπίζει άλλο λάθος (αγνοεί τη ψευδομονάδα error). Αν προηγουμένως δεν έχει εκτελέσει τρεις διαδοχικές ενέργειες ώθησης σε κανονική λειτουργία. Αυτό γίνεται για να αποφεύγεται ο εντοπισμός πλασματικών λαθών. Σε μία τέτοια περίπτωση λέμε ότι ο αναλυτής συνεχίζει τη λειτουργία του σε κατάσταση λάθους. 110

Εντοπισμός λάθους στην ανάλυση LR - Συνέχεια (3/9) Η διαχείριση λαθών πρέπει να γίνεται με τέτοιο τρόπο. Ώστε η επαναφορά του μεταγλωττιστή σε κανονική λειτουργία. Να γίνεται μετά από ανάγνωση ενός εύλογου αριθμού συμβόλων. Κι όχι αφού έχει διαβασθεί ένα μεγάλο μέρος του προγράμματος. Χωρίς ο αναλυτής να έχει τη δυνατότητα εντοπισμού λαθών. 111

Εντοπισμός λάθους στην ανάλυση LR - Συνέχεια (4/9) Όταν δεν υπάρχει κίνδυνος εντοπισμού διαδιδόμενων λαθών. Μπορεί να χρησιμοποιείται το macro yyerrok. Το macro αυτό, επαναφέρει τον αναλυτή σε κανονική λειτουργία. Χωρίς να έχει προηγηθεί η εκτέλεση τριών ενεργειών ώθησης. 112

Εντοπισμός λάθους στην ανάλυση LR - Συνέχεια (5/9) Προσοχή. Αν στο προηγούμενο παράδειγμα γράφαμε: 113

Εντοπισμός λάθους στην ανάλυση Άλλη δυνατότητα. LR - Συνέχεια (6/9) Αγνόηση του σύμβολο εισόδου. Που ευθύνεται για τον εντοπισμό λάθους. Συνέχεια της ανάλυσης με το σύμβολο που ακλουθεί. Χρησιμοποιείτε το macro yyclearin. 114

Εντοπισμός λάθους στην ανάλυση LR - Συνέχεια (7/9) Στο παράδειγμα της προηγούμενης διαφάνειας. Ο κανόνας λάθους συνοδεύεται από μονάδα συγχρονισμού. Πως αντιδρά ο αναλυτής σε μία τέτοια περίπτωση; 115

Εντοπισμός λάθους στην ανάλυση LR - Συνέχεια (8/9) Το byacc αγνοεί σύμβολα εισόδου μέχρι τον εντοπισμό κάποιου που: Είτε είναι μία από τις μονάδες συγχρονισμού. Είτε μπορεί δυνητικά να απλοποιηθεί σε κάποιο από αυτά. Αν αυτό είναι μη τερματικό. 116

Εντοπισμός λάθους στην ανάλυση LR - Συνέχεια (9/9) Τότε το σύμβολο ωθείται στη στοίβα. Έτσι, η ανάλυση μπορεί: Να εκτελέσει απλοποίηση σύμφωνα με τον κανόνα του λάθους. Σε ένα ή περισσότερα βήματα. Και να συνεχίσει την πορεία της. 117

Βιβλιογραφία 1. «Μεταγλωττιστές γλωσσών Προγραμματισμού: Θεωρία και Πράξη», Λάζος, Κ.Ε., Κατσαρός και Π.Θ., Καραΐσκος, Ζ.Κ. (2004), Εκδόσεις Θεσσαλονίκη, [ISBN:960-87723-4-6]. 2. «Μεταγλωττιστές», Παπασπύρου, Ν.Σ. και Σκορδαλάκης, Ε.Σ (2002), Εκδόσεις Συμμετρία, 2002, [ISBN: 978-960-266-135-2]. 118

Τέλος Ενότητας 119