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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Θέματα υπολογισμού στον πολιτισμό

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

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

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

Θεωρία Υπολογισμού. Ενότητα 5 : Λογικά Επιχειρήματα, Αλφάβητα & Γλώσσες (2/2) Αλέξανδρος Τζάλλας

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

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

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

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

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

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

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

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

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

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

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

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

Υπολογιστικά & Διακριτά Μαθηματικά

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

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

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

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

ΣΤΑΤΙΣΤΙΚΗ ΙΙ. Ενότητα 2: ΣΤΑΤΙΣΤΙΚΗ ΙΙ (2/4). Επίκ. Καθηγητής Κοντέος Γεώργιος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

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

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις

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

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

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

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

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

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

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

Θέματα υπολογισμού στον πολιτισμό

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός H/Y Ενότητα 2: Εντολές ελέγχου ροής. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οργάνωση Υπολογιστών

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

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

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

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

Υπολογιστικά & Διακριτά Μαθηματικά

Υπολογιστικά & Διακριτά Μαθηματικά

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

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οικονομετρία Ι. Ενότητα 4: Διάστημα Εμπιστοσύνης - Έλεγχος Υποθέσεων. Δρ. Χαϊδώ Δριτσάκη Τμήμα Λογιστικής & Χρηματοοικονομικής

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

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

Περιεχόμενα Συμβολοσειρές Γλώσσες ΘΥ 6: Συμβολοσειρές & γλώσσες Επ. Καθ. Π. Κατσαρός 24/07/2014 Επ. Καθ. Π. Κατσαρός ΘΥ 6: Συμβολοσειρές & γλώσσες

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

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

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

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

Transcript:

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

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

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

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

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

Περιεχόμενα ενότητας (1/3) Φάσεις της μεταγλώττισης. Συντακτική ανάλυση. Γραμματικές. Ορισμός γραμματικών. Ιεραρχία Chomsky. Γραμματικές και συντακτική ανάλυση. 6

Περιεχόμενα ενότητας (2/3) Διαδικασία της συντακτικής ανάλυσης. Συμβολισμοί Backus-Naur Form (BNF) και Extended BNF (EBNF). Παράγωγα και συντακτικά δένδρα. Γραμματικές με ασάφειες. Αναπαράσταση παράγωγου δένδρου. Καθοδική ανάλυση. 7

Περιεχόμενα ενότητας (3/3) Καθοδική ανάλυση με οπισθοδρόμηση. Ανάλυση προβλέπουσας αναδρομικής κατάβασης. Ανάλυση LL(1). Αλγόριθμος ανάλυσης LL(1). Απομάκρυνση αριστερής αναδρομικότητας. Αριστερή παραγοντοποίηση. 8

Φάσεις της μεταγλώττισης Σχήμα 1. Φάσεις της μεταγλώττισης, (πηγή: διδάσκων, 2014). 9

Συντακτική ανάλυση (1/2) Είσοδος. Λεξικές μονάδες. Παράγονται κατά τη λεξική ανάλυση. Προσπαθεί να ανιχνεύσει τη δομή του προγράμματος. 10

Συντακτική ανάλυση (2/2) Αποτέλεσμα. Παράγεται μία δομή. Ανάλογα με τη μορφή της αποκαλείται είτε παράγωγο είτε συντακτικό δένδρο. Πώς μπορεί να παραστασταθεί η σύνταξη της γλώσσας με ακρίβεια και ευκολία; Θα πρέπει να βρεθεί η κατάλληλη γραμματική. 11

Γραμματικές (1/6) Γραμματική. Ένα σύστημα παραγωγής συμβολοσειρών G. Που ορίζεται από μία διατεταγμένη τετράδα της μορφής (T, N,P, S). Τ: Αλφάβητο τερματικών συμβόλων. Ν: Αλφάβητο μη τερματικών συμβόλων. Τ Ν=. 12

Γραμματικές (2/6) Ρ: Πεπερασμένο σύνολο κανόνων παραγωγής. U ū. Με U N και ū (Ν Τ) u. Το σύνολο δηλαδή των λέξεων με μήκος μεγαλύτερο ή ίσο του μηδενός. Που μπορεί να σχηματισθούν από τα στοιχεία του (Ν Τ), λεξικού της G:» {x1,,xn xi Ν Τ, i=1, }. 13

Γραμματικές (3/6) S: Αρχικό σύμβολο της γραμματικής. Μη τερματικό σύμβολο. Παραγωγή συμβολοσειρών. Ξεκινούμε με τη συμβολοσειρά που περιέχει μόνο το αρχικό σύμβολο. Από τη συμβολοσειρά αυτή, παράγεται μία νέα. Μία υποσυμβολοσειρά της που αντιστοιχεί σε αριστερό μέλος κανόνα, αντικαθίσταται με το αντίστοιχο δεξί μέλος. 14

Γραμματικές (4/6) Παραγωγής συμβολοσειρών (Συνέχεια). Η διαδικασία επαναλαμβάνεται όσες φορές κριθεί απαραίτητο. Όταν προκύψει μία συμβολοσειρά αποτελούμενη μόνο από τερματικά σύμβολα. Λέμε ότι αυτή η συμβολοσειρά παράγεται από τη γραμματική. 15

Γραμματικές (5/6) Μία γλώσσα. Παράγεται από μία γραμματική. Ορίζεται ως L(G) = { α T * S + α }. Το σύµβολο +. Σηµαίνει ότι διενεργούνται ένα ή περισσότερα βήµατα για την παραγωγή της συµβολοσειράς. 16

Γραμματικές (6/6) Μία γραμματική G=(T,N,P,S). Ορίζει µία γλώσσα L(G) T *. Μια γλώσσα χαρακτηρίζεται ως τυπική. Όταν υπάρχει γραμματική που την παράγει. 17

Ορισμός γραμματικής (1/2) Κατά τον ορισμό μίας γραμματικής πρέπει να πληρούνται οι παρακάτω προϋποθέσεις. Να μην περιλαμβάνονται πλεονασματικοί κανόνες παραγωγής, που ενδέχεται να: Έχουν αρνητικές επιπτώσεις στην ταχύτητα ανάλυσης των προτάσεων της γλώσσας. Οδηγούν σε λάθη. Να μην περιλαμβάνονται παραγωγές-ε. Μόνο στην περίπτωση που υπάρχει ισοδύναμη γραμματική χωρίς κανόνες-ε. 18

Ορισμός γραμματικής (2/2) Κατά τον ορισμό μίας γραμματικής πρέπει να πληρούνται οι παρακάτω προϋποθέσεις (Συνέχεια). Να μην περιλαμβάνονται κυκλικοί κανόνες παραγωγής. 19

Ιεραρχία Chomsky (1/5) Οι γραμματικές και τις σχετικές γλώσσες κατατάσσονται σε 4 τύπους: Τύπος 3 Τύπος 2 Τύπος 1 Τύπος 0. Γραμματικές τύπου 0. Δεν διέπονται από κανένα περιορισμό. 20

Ιεραρχία Chomsky (2/5) Γραμματικές τύπου 1. Χαρακτηρίζονται κι ως γραμματικές με συμφραζόμενα. Περιέχουν κανόνες της μορφής α β. Η συμβολοσειρά α περιέχει τουλάχιστον ένα μη τερματικό σύμβολο α β. Αν το S δεν υπάρχει σε δεξί μέλος κανόνα. Οι παραγόμενες γλώσσες μπορούν να περιέχουν την κενή συμβολοσειρά (S ε). 21

Ιεραρχία Chomsky (3/5) Γραμματικές τύπου 2. Χαρακτηρίζονται κι ως γραμματικές χωρίς συμφραζόμενα. Περιέχουν κανόνες της μορφής Α α. Α: ένα μη τερματικό σύμβολο. α: συμβολοσειρά. Χρησιμοποιούνται για την περιγραφή του συντακτικού γλωσσών προγραμματισμού. 22

Ιεραρχία Chomsky (4/5) Γραμματικές τύπου 3. Χαρακτηρίζονται κι ως κανονικές γραμματικές. Περιέχει κανόνες της μορφής Α ε ή Α aβ, Α a. Α,Β: Μη τερματικό σύμβολο. a: Τερματικό σύμβολο. Γλώσσες που αποφασίζονται από πεπερασμένα αυτόματα. 23

Ιεραρχία Chomsky (5/5) Γραμματικές τύπου 3 (Συνέχεια). Χρησιμοποιούνται στη λεξική ανάλυση. 24

Γραμματικές και συντακτική ανάλυση Πιθανές Επιλογές. Κανονικές Γραμματικές. Ευκολία στην υλοποίηση. Πρόβλημα. ΝΠΑ έχουν πεπερασμένο αριθμό καταστάσεων. Γλώσσες χωρίς συμφραζόμενα. 25

Διαδικασία της συντακτικής Είσοδος. ανάλυσης (1/2) Μια γραμματική του τύπου που υποστηρίζει ο αλγόριθμος. Π.χ. γραμματική χωρίς συμφραζόμενα. Μια ακολουθία α από τερματικά σύμβολα της γραμματικής. 26

Διαδικασία της συντακτικής Έξοδος. ανάλυσης (2/2) Απάντηση στο αν η α ανήκει στη γλώσσα που ορίζει η γραμματική. Αν ανήκει τότε παράγεται και το συντακτικό δέντρο της α. 27

Συμβολισμοί BNF και EBNF (1/2) Πίνακας 1. Συμβολισμοί BNF και EBNF. Μη τερματικά Κανονικοί χαρακτήρες, που δεν περικλείονται σύμβολα σε < > Τερματικά σύμβολα Περιλαμβάνονται σε Συμβολίζει εναλλακτικές περιπτώσεις ( ) Για ομαδοποίηση κι αλλαγή της προτεραιότητας εφαρμογής των συμβόλων [ ] Δηλώνει την προαιρετική εμφάνιση των συμβόλων που περιέχει { } Δηλώνει την προαιρετική επανάληψη των συμβόλων που περιέχει 28

Συμβολισμοί BNF και EBNF (2/2) Πίνακας 1 (Συνέχεια). Συμβολισμοί BNF και EBNF. Μη τερματικά Κανονικοί χαρακτήρες, που δεν περικλείονται σύμβολα σε < > Τερματικά σύμβολα Περιλαμβάνονται σε = Χρησιμοποιείται στους ορισμούς των κανόνων παραγωγής αντί των ή ::=. Δηλώνει το τέλος ενός κανόνα παραγωγής (* *) Χρησιμοποιούνται για τη συμπερίληψη σχολίων 29

Παράδειγμα συμβολισμών BNF και EBNF Γραμματική αριθμητικών εκφράσεων. 30

Παράγωγα και συντακτικά δένδρα Ένα παράγωγο δένδρο. Αναπαριστά τη δομή μίας πρότασης. Μπορεί να αντιστοιχεί σε περισσότερες από μία παραγωγές. 31

Παράδειγμα παράγωγων και συντακτικών δένδρων Έστω S = έκφραση. Η έκφραση διατυπώνεται ως: έκφραση τελεστής έκφραση ( έκφραση ) αριθμός Ο τελεστής διατυπώνεται ως: + - * / Πρόταση: (32-6)*12 32

Παράγωγα και συντακτικά δένδρα - Συνέχεια (1/6) Παραγωγή μέσω δεξιών προτασιακών μορφών. έκφραση έκφραση τελεστής έκφραση [έκφραση = έκφραση τελεστής έκφραση]. έκφραση έκφραση τελεστής αριθμός [έκφραση = αριθμός ]. έκφραση έκφραση * αριθμός [τελεστής = * ]. έκφραση ( έκφραση ) * αριθμός [έκφραση = ( έκφραση ) ]. 33

Παράγωγα και συντακτικά δένδρα - Συνέχεια (2/6) Παραγωγή μέσω δεξιών προτασιακών μορφών (Συνέχεια). έκφραση (έκφραση τελεστής έκφραση) * αριθμός [έκφραση = έκφραση τελεστής έκφραση]. έκφραση (έκφραση τελεστής αριθμός) * αριθμός [έκφραση = αριθμός ]. έκφραση (έκφραση - αριθμός) * αριθμός [τελεστής = - ]. έκφραση (αριθμός - αριθμός) * αριθμός [έκφραση = αριθμός ]. 34

Παράγωγα και συντακτικά δένδρα - Συνέχεια (3/6) Παραγωγή μέσω αριστερών προτασιακών μορφών έκφραση έκφραση τελεστής έκφραση [έκφραση = έκφραση τελεστής έκφραση] έκφραση (έκφραση) τελεστής έκφραση [έκφραση = ( έκφραση ) ] έκφραση (έκφραση τελεστής έκφραση) τελεστής έκφραση [έκφραση = έκφραση τελεστής έκφραση] έκφραση (αριθμός τελεστής έκφραση) τελεστής έκφραση [έκφραση = αριθμός ] 35

Παράγωγα και συντακτικά δένδρα - Συνέχεια (4/6) Παραγωγή μέσω αριστερών προτασιακών μορφών (Συνέχεια). έκφραση (αριθμός - έκφραση) τελεστής έκφραση [τελεστής = - ]. έκφραση (αριθμός - αριθμός) τελεστής έκφραση [έκφραση = αριθμός ]. έκφραση (αριθμός - αριθμός) * έκφραση [τελεστής = * ]. έκφραση (αριθμός - αριθμός) * αριθμός [έκφραση = αριθμός ]. 36

Παράγωγα και συντακτικά δένδρα - Συνέχεια (5/6) Σχήμα 2. Παράγωγα και συντακτικά δέντρα (πηγή: διδάσκων, 2014). 37

Παράγωγα και συντακτικά δένδρα Συντακτικό δένδρο. Συμπαγής δομή. - Συνέχεια (6/6) Περιέχει και την πληροφορία της στατικής σημασίας της πρότασης. Σχήμα 3. Συντακτικό δέντρο (πηγή: διδάσκων, 2014). 38

Γραμματικές με ασάφειες (1/18) Λέμε ότι μία γραμματική περιέχει ασάφειες. Όταν σε μία πρότασή της μπορεί να αντιστοιχούν περισσότερα από ένα δένδρα. 39

Γραμματικές με ασάφειες (2/18) έκφραση έκφραση τελεστής έκφραση [έκφραση = έκφραση τελεστής έκφραση]. έκφραση έκφραση τελεστής έκφραση τελεστής έκφραση [έκφραση = έκφραση τελεστής έκφραση]. έκφραση αριθμός τελεστής έκφραση τελεστής έκφραση [έκφραση = αριθμός ]. έκφραση αριθμός - έκφραση τελεστής έκφραση [τελεστής = - ]. 40

Γραμματικές με ασάφειες (3/18) έκφραση αριθμός - αριθμός τελεστής έκφραση [έκφραση = αριθμός ]. έκφραση αριθμός - αριθμός * έκφραση [τελεστής = * ]. έκφραση αριθμός - αριθμός * αριθμός [έκφραση = αριθμός ]. 41

Γραμματικές με ασάφειες (4/18) Σχήμα 4. Γραμματικές με ασάφειες (1), (πηγή: διδάσκων, 2014). 42

Γραμματικές με ασάφειες (5/18) έκφραση έκφραση τελεστής έκφραση [έκφραση = έκφραση τελεστής έκφραση]. έκφραση αριθμός τελεστής έκφραση [έκφραση = αριθμός ]. έκφραση αριθμός - έκφραση [τελεστής = - ]. έκφραση αριθμός - έκφραση τελεστής έκφραση [έκφραση = έκφραση ΤΛ έκφραση]. 43

Γραμματικές με ασάφειες (6/18) έκφραση αριθμός - αριθμός ΤΛ έκφραση [έκφραση = αριθμός ]. έκφραση αριθμός - αριθμός * έκφραση [τελεστής = * ]. έκφραση αριθμός - αριθμός * αριθμός [έκφραση = αριθμός ]. 44

Γραμματικές με ασάφειες (7/18) Σχήμα 5. Γραμματικές με ασάφειες (2), (πηγή: διδάσκων, 2014). 45

Γραμματικές με ασάφειες (8/18) Σωστό δένδρο. Το δένδρο που είναι συμβατό με τη σημασία που θέλουμε να αποδώσουμε στο εκάστοτε στοιχείο της γλώσσας. Για την αντιμετώπιση της ασάφειας στην προτεραιότητα των τελεστών. Χρησιμοποιούνται κανόνες αποσαφήνισης των προτεραιοτήτων. 46

Γραμματικές με ασάφειες (9/18) S = έκφραση έκφραση = έκφραση τελεστής_πα έκφραση όρος. τελεστής = + -. όρος = όρος τελεστής_πδ όρος παράγοντας. τελεστής = * /. παράγοντας = ( έκφραση ) αριθμός. 47

Γραμματικές με ασάφειες (10/18) Η προηγούμενη γραμματική δημιουργεί ασάφειες σχετικά με την προσεταιριστικότητα των πράξεων: Ανάλυση της 32-6-12. Η συγκεκριμένη γραμματική αφήνει ανοιχτά δύο και ενδεχόμενα. (32-6)-12. 32-(6-12). 48

Γραμματικές με ασάφειες (11/18) Συνήθως μας ενδιαφέρει να διασφαλίζουμε αριστερή προσεταιριστικότητα. Αυτό επιτυγχάνεται αν ο αντίστοιχος κανόνας της γραμματικής: Χαρακτηρίζεται από αριστερή και μόνο αριστερή αναδρομικότητα. 49

Γραμματικές με ασάφειες (12/18) Διορθωμένη γραμματική: S = έκφραση. έκφραση = έκφραση τελεστής_πα όρος όρος. τελεστής_πα = + -. όρος = όρος τελεστής_πδ παράγοντας παράγοντας τελεστής_πδ = * /. παράγοντας = ( έκφραση ) αριθμός. Πρόταση: 32-5*12. 50

Γραμματικές με ασάφειες (13/18) Σχήμα 6. Γραμματικές με ασάφειες (3), (πηγή: διδάσκων, 2014). 51

Γραμματικές με ασάφειες (14/18) Πρόταση: 32-6-12. Σχήμα 7. Πρόταση 32-6-12, (πηγή: διδάσκων, 2014). 52

Γραμματικές με ασάφειες (15/18) Το πρόβλημα του μετέωρου else. 53

Γραμματικές με ασάφειες (16/18) Σχήμα 8. Γραμματικές με ασάφειες (4), (πηγή: διδάσκων, 2014). 54

Γραμματικές με ασάφειες (17/18) Σχήμα 9. Γραμματικές με ασάφειες (5), (πηγή: διδάσκων, 2014). 55

Γραμματικές με ασάφειες (18/18) Αποφυγή του προβλήματος του μετεώρου else με τέχνασμα. 56

Καθοδική ανάλυση Ξεκινά από την αρχή της γραμματικής. Για να αναπτύξει τη συμβολοσειρά που αναλύει αν αυτή αποτελεί πρόταση. Καμία από τις τεχνικές που εξετάζονται παρακάτω δεν εφαρμόζεται σε αριστερά αναδρομικές γραμματικές. Διακρίνουμε δύο τεχνικές. Οπισθοδρόμηση. Πρόγνωση. 57

Καθοδική ανάλυση με οπισθοδρόμηση (1/3) 1. Δοθέντος ενός μη τερματικού συμβόλου. Γίνεται εφαρμογή του πρώτου κανόνα της γραμματικής. 2. Στην προτασιακή μορφή που προκύπτει. Επιλέγεται το πρώτο από αριστερά μη τερματικό σύμβολο Εφαρμόζεται ο πρώτος κανόνας που αναφέρεται σε αυτό. 58

Καθοδική ανάλυση με οπισθοδρόμηση (2/3) 3. Γίνεται επαναληπτική εφαρμογή του βήματος 2. Για κάθε ένα από τα μη τερματικά σύμβολα που ακολουθούν. Μέχρι τη στιγμή της παραγωγής: Μίας σειράς τερματικών συμβόλων ή. Τμήματος τερματικών συμβόλων της προτασιακής μορφής. Που διαφέρει από το αντίστοιχο τμήμα της συμβολοσειράς εισόδου. 59

3. (Συνέχεια). Καθοδική ανάλυση με οπισθοδρόμηση (3/3) Η δεύτερη περίπτωση μπορεί να είναι αποτέλεσμα εσφαλμένης επιλογής κανόνα. Αναιρείται ο κανόνας που εφαρμόσθηκε τελευταίος και χρησιμοποιείται ο επόμενος που ισχύει για το ίδιο μη τερματικό σύμβολο. Αν έχουν χρησιμοποιηθεί όλοι οι κανόνες, ο αλγόριθμος. Διατηρεί το σύμβολο ως έχει. Προχωρά στην αναίρεση του κανόνα για το προηγούμενο μη τερματικό σύμβολο και οπισθοδρομεί στην κατάλληλη θέση της συμβολοσειράς εισόδου. 60

Καθοδική ανάλυση με οπισθοδρόμηση - Παράδειγμα S = k X n ή k Y X = l ή m Y = mmn ή nnm Πρόταση: kmmm Σχήμα 10. Καθοδική ανάλυση με οπισθοδρόμηση, (πηγή: διδάσκων, 2014). 61

Καθοδική ανάλυση με οπισθοδρόμηση - Συνέχεια Πολύπλοκη. Μη αποδοτική. Γενική. Αναγνωρίζει περισσότερες γλώσσες από ότι οι υπόλοιπες τεχνικές καθοδικής ανάλυσης. Αργεί στον εντοπισμό λαθών. Η ανάνηψη γίνεται πολύ δύσκολη. 62

Ανάλυση προβλέπουσας αναδρομικής κατάβασης (1/3) Στην ανάλυση αναδρομικής κατάβασης. Ο κάθε κανόνας που αναφέρεται σε κάποιο μη τερματικό σύμβολο. Εκφράζεται από τον ορισμό μιας διαδικασίας που θα το αναγνωρίζει. 63

Ανάλυση προβλέπουσας αναδρομικής κατάβασης (2/3) Ένας αναλυτής προβλέπουσας αναδρομικής κατάβασης αποτελείται από: Μία καθολική μεταβλητή. Που περιέχει την τιμή της τρέχουσας λεξικής μονάδας. Μία βοηθητική διαδικασία αναγνώρισης. Που ελέγχει αν η τρέχουσα λεξική μονάδα είναι η αναμενόμενη και καλεί τη διαδικασία λεξικής ανάλυσης. Για την ανάγνωση της επόμενης λεξικής μονάδας και την ενημέρωση της καθολικής μεταβλητής. 64

Ανάλυση προβλέπουσας αναδρομικής κατάβασης (3/3) Ένας αναλυτής προβλέπουσας αναδρομικής κατάβασης αποτελείται από (Συνέχεια): Τις διαδικασίες ανάλυσης. Που αντιστοιχούν στα μη τερματικά σύμβολα της γραμματικής. Μία διαδικασία εκκίνησης. Που αφού διαβάσει την πρώτη λεξική μονάδα. Καλεί τη διαδικασία που αντιστοιχεί στο μη τερματικό σύμβολο της αρχής. 65

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Παράδειγμα S = έκφραση έκφραση = έκφραση + όρος ή έκφραση - όρος ή όρος όρος = όρος * παράγοντας ή όρος / παράγοντας ή παράγοντας παράγοντας = ( έκφραση ) ή αριθμός 66

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (1/26) Η προβλέπουσα αναδρομική κατάβαση. Στηρίζεται στην πρόγνωση του κατάλληλου κάθε φορά κανόνα. Οδηγεί στην παραγωγή του δένδρου της πρότασης. Δε μπορεί να εφαρμοσθεί σε αριστερά αναδρομικές γραμματικές. 67

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (2/26) Ας θεωρήσουμε τη μη αριστερά αναδρομική γραμματική των αριθμητικών εκφράσεων: S = έκφραση έκφραση = όρος υπ_όροι υπ_όροι = + όρος υπ_όροι ή - όρος υπ_όροι ή ε όρος = παράγοντας υπ_παραγ υπ_παραγ = * παράγοντας υπ_παραγ ή / παράγοντας υπ_παραγ ή ε παράγοντας = ( έκφραση ) ή αριθμός 68

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (3/26) Εναλλακτικά, για το μη τερματικό σύμβολο «έκφραση» μπορούμε να έχουμε μία από τις παρακάτω παραγωγές: έκφραση όρος υπ_όροι παράγοντας υπ_παραγ υπ_όροι (έκφραση) υπ_παραγ υπ_όροι... έκφραση όρος υπ_όροι παράγοντας υπ_παραγ υπ_όροι αριθμός υπ_παραγ υπ_όροι... 69

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (4/26) Για να στηριχθεί η ανάλυση στην τεχνική της πρόγνωσης. Χρειάζεται για κάθε μη τερματικό σύμβολο. Να είναι εκ των προτέρων γνωστό τo σύνολο των τερματικών. Που είναι δυνατό να εμφανισθούν στην αρχή των συμβολοσειρών, που παράγονται από αυτό.» Σύνολο FIRST. 70

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (5/26) Αν η γραμματική περιλαμβάνει κανόνες-ε. Για κάθε μη τερματικό σύμβολο που βρίσκεται στο αριστερό μέρος ενός τέτοιου κανόνα. Επιβάλλεται και ο υπολογισμός του συνόλου των τερματικών. Που μπορεί να εμφανισθούν αμέσως μετά από αυτό.» Σύνολο FOLLOW. 71

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (6/26) Ανάλυση πρόγνωσης. Δοθείσης μίας παραγωγής A. Ο αναλυτής πρέπει να είναι σε θέση να επιλέξει μεταξύ &. Σύνολα FIRST. Για ένα δεξί μέρος παραγωγής G. Ορίζουμε ως FIRST( ) το σύνολο των αναγνωριστικών που εμφανίζονται πρώτα στις συμβολοσειρές που παράγονται από το. 72

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (7/26) Δηλαδή ισχύει. x FIRST( ) αν και μόνο αν * x. Για κάποια συμβολοσειρά. Γραμματική LL(1). Αν A και A εμφανίζονται στη γραμματική πρέπει FIRST( ) FIRST( ) =. Αυτό επιτρέπει στον αναλυτή να προγνώσει με ασφάλεια την παραγωγή που θα χρησιμοποιεί σε κάθε βήμα!. 73

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (8/26) Δοθείσης μίας γραμματικής που έχει την ιδιότητα LL(1). Μπορούμε να γράψουμε διαδικασίες. Που να αναγνωρίζουν το αριστερό μέρος της κάθε παραγωγής. Ο κώδικας της ανάλυσης είναι απλός και γρήγορος. 74

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (9/26) Οι γραμματικές με την ιδιότητα LL(1). Ονομάζονται προγνώσιμες γραμματικές. Γιατί ο αναλυτής μπορεί να «προγνώσει» τη σωστή ανάπτυξη σε κάθε σημείο της ανάλυσης. Οι αναλυτές που εκμεταλλεύονται την ιδιότητα LL(1). Ονομάζονται αναλυτές πρόγνωσης. Μία περίπτωση ανάλυσης πρόγνωσης είναι η ανάλυση προβλέπουσας αναδρομικής κατάβασης. 75

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (10/26) Παράδειγμα διορθωμένης γραμματικής αριθμητικών εκφράσεων. Για την κατασκευή παράγωγου δένδρου: Γράφουμε μέσα στις διαδικασίες κώδικα για δημιουργία κόμβου. Περνάμε τους κόμβους από διαδικασία σε διαδικασία μέσω μίας στοίβας. 76

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (11/26) Για την κατασκευή παράγωγου δένδρου (Συνέχεια): Αφαιρούμε από τη στοίβα τους κόμβους του δεξιού μέρους της παραγωγής. Τους κάνουμε απογόνους του κόμβου του αριστερού μέρους. Εισάγουμε τον τελευταίο στη στοίβα. 77

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (12/26) Για την κατασκευή συντακτικού δένδρου. Κατασκευάζουμε λιγότερους κόμβους. Χρειάζεται να τους βάζουμε στη στοίβα με την κατάλληλη σειρά. Ώστε να εξασφαλίζουμε αριστερή προσεταιριστικότητα. 78

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (13/26) Γενική μορφή διαδικασιών προβλέπουσας αναδρομικής κατάβασης. Αν για το μη τερματικό σύμβολο Χ ορίζεται στη γραμματική ο κανόνας: X p1 p2... 79

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (14/26) Σύνολα first για σύμβολα γραμματικής. Για μία σειρά συμβόλων της γραμματικής. Ορίζουμε FIRST( ) ως το σύνολο των αναγνωριστικών. Που εμφανίζονται στην αρχή των συμβολοσειρών που παράγονται από την. 80

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (15/26) Για να υπολογίσετε το FIRST(X) για ένα σύμβολο X. Εφαρμόζετε τους επόμενους κανόνες. Μέχρι όταν δεν προστίθενται πλέον στο FIRST(X) νέα σύμβολα. Αν το X είναι τερματικό. Τότε FIRST(X) είναι το {X}. 81

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (16/26) Αν υπάρχει παραγωγή X. Τότε το περιλαμβάνεται στο FIRST(X). Αν το X είναι μη τερματικό και X Y1Y2... Yk είναι μια παραγωγή. Τότε συμπεριλαμβάνουμε στο FIRST(X) κάθε στοιχείο του FIRST(Y1) εκτός από το. 82

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (17/26) Αν το X είναι μη τερματικό και X Y1Y2... Yk είναι μια παραγωγή. Τότε συμπεριλαμβάνουμε το τερματικό a στο FIRST(X). Αν το a είναι στο FIRST(Yi) και είναι στα FIRST(Yj) για όλα τα 1 j i. 83

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (18/26) Αν X είναι ένα μη τερματικό και X Y1Y2... Yk μία παραγωγή. Τότε συμπεριλαμβάνουμε το στο FIRST(X). Αν το είναι στα FIRST(Yi) για όλα 1 i k. 84

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (19/26) Σύνολα first για σειρές συμβόλων της γραμματικής. Για να υπολογίσουμε το σύνολο FIRST για μία σειρά X1X2... Xn συμβόλων της γραμματικής. Εφόσον έχουμε υπολογίσει τα σύνολα FIRST για τα X1, Χ2,..., Xn εφαρμόζουμε τα ακόλουθα (βλέπε επόμενη διαφάνεια). 85

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (20/26) Το FIRST(X1X2... Xn) θα περιλαμβάνει: Όλα τα σύμβολα του FIRST(X1) εκτός από το. Όλα τα σύμβολα του FIRST(Xi) εκτός από το. Αν το είναι στα FIRST(Xj) για όλα τα 1 j i. Και το. Αν είναι στα FIRST(Xi) για όλα τα 1 i n. 86

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (21/26) Παράδειγμα υπολογισμού συνόλων first. S = έκφραση έκφραση = όρος υπ_όροι υπ_όροι = + όρος υπ_όροι ή - όρος υπ_όροι ή ε όρος = παράγοντας υπ_παραγ υπ_παραγ = * παράγοντας υπ_παραγ ή / παράγοντας υπ_παραγ ή ε. παράγοντας = ( έκφραση ) ή αριθμός 87

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (22/26) Σύνολα follow για μη τερματικά σύμβολα γραμματικής. Για ένα μη τερματικό σύμβολο A ορίζουμε το FOLLOW(A). Ως το σύνολο των τερματικών που μπορούν να εμφανισθούν δεξιά του A. Σε κάποια προτασιακή μορφή. 88

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (23/26) Για τον υπολογισμό των FOLLOW(A) για ένα μη τερματικό A. Εφαρμόζουμε τους κανόνες που ακολουθούν. Μέχρι όταν δεν προστίθενται πλέον νέα σύμβολα στο FOLLOW(A). Εισάγουμε το $ στο FOLLOW(S). $ είναι το τέλος συμβολοσειράς. S είναι η αρχή της γραμματικής. 89

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (24/26) Αν υπάρχει παραγωγή A B. Περιλαμβάνουμε στο FOLLOW(B) όλα τα σύμβολα του FIRST( ) εκτός του. Αν υπάρχει παραγωγή A B. Περιλαμβάνουμε στο FOLLOW(B) όλα τα σύμβολα του FOLLOW(A). 90

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (25/26) Αν υπάρχει παραγωγή A B και το είναι στο FIRST( ). Περιλαμβάνουμε στο FOLLOW(B) όλα τα σύμβολα του FOLLOW(A). 91

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (26/26) Δεν μπορούν να χρησιμοποιηθούν αριστερά αναδρομικές γραμματικές. Δεν μπορούν να χρησιμοποιηθούν γραμματικές, που δεν είναι LL(1), όπως π.χ.: σειρά_εντολών = εντολή ; σειρά_εντολών ή εντολή εντολή = τερματικό 92

Ανάλυση LL(1) (1/3) Σχήμα 11. Ανάλυση LL(1), (πηγή: διδάσκων, 2014). 93

Ανάλυση LL(1) (2/3) Αλγόριθμος υπολογισμού πίνακα ανάλυσης Μ. Για όλες τις παραγωγές A, εφάρμοσε τα εξής βήματα: Για κάθε τερματικό a στο FIRST( ). Θέσε A στη θέση M[A, a]. Αν το περιλαμβάνεται στο FIRST( ). Θέσε A στις θέσεις M[A, b] για κάθε τερματικό b του FOLLOW(A). Θέσε A στη θέση M[A, $] αν το $ περιλαμβάνεται στο FOLLOW(A). 94

Ανάλυση LL(1) (3/3) Όλες οι υπόλοιπες θέσεις του πίνακα M εκφράζουν την αναγνώριση λάθους. Παράδειγμα (Γραμματική αριθμητικών εκφράσεων). S = έκφραση έκφραση = όρος υπ_όροι υπ_όροι = + όρος υπ_όροι ή - όρος υπ_όροι ή ε όρος = παράγοντας υπ_παραγ. υπ_παραγ = * παράγοντας υπ_παραγ ή / παράγοντας υπ_παραγ ή ε παράγοντας = ( έκφραση ) ή αριθμός 95

Απομάκρυνση αριστερής αναδρομικότητας (1/2) Διακρίνουμε την άμεση και την έμμεση αριστερή αναδρομικότητα. Παράδειγμα άμεσης αριστερής αναδρομικότητας: έκφραση = έκφραση ΤΛ_ΑΘ όρος ή όρος Παράδειγμα έμμεσης αριστερής αναδρομικότητας: X Yp 2... Y Xp 1... 96

Απομάκρυνση αριστερής αναδρομικότητας (2/2) Γενική μορφή άμεσης αριστερής αναδρομικότητας: X Xp 1 Xp2... Xpn q1 q2... q m Μετασχηματίζεται στην ισοδύναμη μορφή: X X q1 X ' q2x '... qmx '. ' 2 p1 X ' p X '... pn X '. 97

Απομάκρυνση αριστερής αναδρομικότητας - Παράδειγμα Η S = έκφραση. έκφραση = έκφραση + όρος ή έκφραση - όρος ή όρος όρος = όρος * παράγοντας ή όρος / παράγοντας ή παράγοντας παράγοντας = ( έκφραση ) ή αριθμός Μετασχηματίστηκε στην: έκφραση = όρος υπ_όροι υπ_όροι = + όρος υπ_όροι ή - όρος υπ_όροι ή ε όρος = παράγοντας υπ_παραγ υπ_παραγ = * παράγοντας υπ_παραγ ή / παράγοντας υπ_παραγ ή ε παράγοντας = ( έκφραση ) ή αριθμός 98

Απομάκρυνση αριστερής αναδρομικότητας - Συνέχεια (1/4) Αλγόριθμος απομάκρυνσης άμεσης και έμμεσης αριστερής αναδρομικότητας. Είσοδος. Μία γραμματική G χωρίς κυκλικούς κανόνες παραγωγής και κανόνες-ε. Έξοδος. Μία ισοδύναμη γραμματική χωρίς αριστερή αναδρομικότητα. 99

Απομάκρυνση αριστερής αναδρομικότητας - Συνέχεια (2/4) Περιγραφή. Θεωρούμε τα μη τερματικά σύμβολα. Με το δείκτη του καθενός να αντιστοιχεί στη σειρά. Με την οποία κάνει την εμφάνισή του ο αντίστοιχος κανόνας στη γραμματική. 100

Απομάκρυνση αριστερής αναδρομικότητας - Συνέχεια (3/4) 101

Απομάκρυνση αριστερής αναδρομικότητας - Συνέχεια (4/4) Κατά την απομάκρυνση της αριστερής αναδρομικότητας. Δεν αλλάζει η γλώσσα της γραμματικής. Αλλάζει η μορφή των δένδρων που παράγει η επιλεγείσα μέθοδος ανάλυσης. Σημαντικότερη συνέπεια: Χάνεται η επιθυμητή ιδιότητα της αριστερής προσεταιριστικότητας. 102

Αριστερή παραγοντοποίηση Προηγείται οποιασδήποτε προβλέπουσας ανάλυσης. Αν για το ίδιο μη τερματικό σύνολο. Υπάρχουν δύο ή περισσότεροι κανόνες με το ίδιο πρόθεμα στο δεξί μέρος. 103

Αριστερή παραγοντοποίηση - Παράδειγμα 104

Αριστερή παραγοντοποίηση - Συνέχεια Γενικά, ο κανόνας: Μία γραμματική G. Έξοδος. X " y" p1 " y" p2. Μετασχηματίζεται στον: X " y" X '. X ' p 1 p2. Είσοδος. Μία ισοδύναμη γραμματική LL(1). 105

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

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