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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Copyright © 2005 Elsevier Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού Πραγματολογία των Γλωσσών Προγραμματισμού Michael L. Scott.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
ΓΡΑΜΜΑΤΙΚΕΣ ΧΩΡΙΣ ΣΥΜΦΡΑΖΟΜΕΝΑ I
Λογισμικό Συστήματος Κλειώ Σγουροπούλου.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Ανακτηση Πληροφοριασ σε νεφη Υπολογιστων
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΠ06 - Μεταγλωττιστές Ανάνηψη από σφάλματα κατά τη συντακτική ανάλυση
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ
Ψηφιακά Δένδρα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Μπορούμε να χρησιμοποιήσουμε την παραπάνω αναπαράσταση.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Κοντινότεροι Κοινοί Πρόγονοι α βγ θ δεζ η π ν ι κλμ ρσ τ κκπ(λ,ι)=α, κκπ(τ,σ)=ν, κκπ(λ,π)=η κκπ(π,σ)=γ, κκπ(ξ,ο)=κ ξο κκπ(ι,ξ)=β, κκπ(τ,θ)=θ, κκπ(ο,μ)=α.
ΕΚΠΑΙΔΕΥΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ ΤΗΣ ΕΥΡΥΤΕΡΗΣ ΕΝΝΟΙΑΣ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ ΧΡΗΣΙΜΟΠΟΙΩΝΤΑΣ ΔΙΑΦΟΡΕΤΙΚΟ ΛΟΓΙΣΜΙΚΟ ΓΙΑ ΚΑΘΕ ΠΤΥΧΗ ΤΟΥ Κάππας Κων/νος Επιμορφωτής ΤΠΕ -
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002 Κ. Μουρλάς, Λέκτορας Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους.
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ» Β΄ τάξης Γενικού Λυκείου
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
ΜΑΘΗΜΑ: ΣΧΕΔΙΑΣΗ ΑΛΓΟΡΙΘΜΩΝ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου 2015Δευτέρα, 12 Ιανουαρίου.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι12-1 Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Ο αλγόριθμος του Prim και ο αλγόριθμος του Kruskal.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Σχεδίαση Αλγορίθμων. Διεργασίες (1/2) Μία διεργασία αλληλεπιδρά με το περιβάλλον της δεχόμενη είσοδο και παράγοντας έξοδο.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.
Ενότητα Α.4. Δομημένος Προγραμματισμός
Γραμματικές Ι Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017.
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΝΤΕΝΤΕΡΜΙΝΙΣΤΙΚΑ ΠΕΠΕΡΑΣΜΕΝΑ ΑΥΤΟΜΑΤΑ Ι
ΣΑ από κάτω-προς-τα-πάνω
Θεωρία Υπολογισμού Εισαγωγή (μέρος 3 ο ). Χρειαζόμαστε Μοντέλα Εμπρός πατάκι Πίσω πατάκι Πόρτα ΚλειστόΑνοιχτό.
Θεωρία Υπολογισμού Πεπερασμένα Αυτόματα. Υπολογισμοί Γλώσσα που αποδέχεται ένας υπολογιστής: Το σύνολο των λέξεων τα οποία οδηγούν σε κατάσταση αποδοχής.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 9: Παραγωγή Ενδιάμεσου Κώδικα (Ενδιάμεσες Γλώσσες) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά.
Quicksort Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι
Ελαφρύτατες διαδρομές TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A AA A A.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Διαγνώσιμες και μη-διαγνώσιμες ασυμφραστικές γραμματικές και γλώσσες
Slide 1/52 ΗΥ – 340 Γλώσσες και Μεταφραστές Φροντιστήριο Yacc.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Τμ.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Παραδείγματα BP.
1 Θεωρία Υπολογισμού Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα Αλέξανδρος Τζάλλας Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Λεκτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γράφημα Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα:
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι
Δυναμικός Κατακερματισμός
ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ
Επίλυση Προβλημάτων με Αναζήτηση
Μοντελοποίηση υπολογισμού
Κεφάλαιο 4 :: Σημασιολογική Ανάλυση
Ισοδυναμία ΠΑ - ΚΕ Για να δείξουμε ότι οι κανονικές γλώσσες - εκφράσεις και τα πεπερασμένα αυτόματα είναι ισοδύναμα σε εκφραστική δυνατότητα έχουμε να.
Συναρτησιακές Εξαρτήσεις
Ισοδυναμία ΜΠΑ με ΠΑ Για κάθε ΜΠΑ Μ υπάρχει αλγόριθμος ο οποίος κατασκευάζει ΠΑ Μ’ αιτιοκρατικό ώστε να αναγνωρίζουν την ίδια ακριβώς γλώσσα. Καθώς το.
Δυναμικός Κατακερματισμός
Αναδρομή Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:
Δομές Δεδομένων (Data Structures)
Μεταγράφημα παρουσίασης:

Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου

Δομή ▪Εισαγωγή στην ανάλυση από κάτω προς τα πάνω. Οι έννοιες της ελάττωσης και ολίσθησης Συγκρούσεις Πλεονεκτήματα της LR ανάλυσης ▪Συντακτική ανάλυση LR Στοιχεία Συναρτήσεις CLOSURE και GOTO Κατασκευή Πίνακα SLR(1) ▪Ανάνηψη από σφάλματα

Συντακτική Ανάλυση από Κάτω προς τα Πάνω ▪Bottom-up Syntax Analysis ▪Δημιουργία δένδρου: Κατασκευή αριστερότερου κόμβου, του οποίου όλοι οι κόμβοι παιδιά (απόγονοι) έχουν ήδη κατασκευαστεί. ▪Η κατασκευή του δένδρου τερματίζει όταν κατασκευαστεί το τερματικό σύμβολο της γραμματικής (ρίζα). ▪Πρόβλημα: Ποιοι ήδη δημιουργημένοι κόμβοι θα χρησιμοποιηθούν ως παιδιά για την κατασκευή του νέου κόμβου;

Παράδειγμα ▪Έστω η ακόλουθη γραμματική και η συμβολοσειρά id * id. Ε ::= Ε "+" Τ | Τ T ::= Τ "*" F | F F ::= "id" | "(" E ")" ▪Η δημιουργία του δένδρου περιλαμβάνει id * * F * F T * * F T F T * F T F E T * F T F

Δεξιότερη Παραγωγή ▪Σε κάθε βήμα, ανάγουμε/ελαττώνουμε (reduce) μια υπο- συμβολοσειρά της εισόδου που ταιριάζει με το δεξιό μέλος ενός κανόνα παραγωγής με αντίστοιχο μη-τερματικό του σύμβολο (αριστερό μέλος). ▪Η προηγούμενη κατασκευή του δένδρου αντιστοιχεί με ανάστροφη σειρά στην παραγωγή: Ε => Τ => Τ * F => T * id => F * id => id*id ▪είναι δηλαδή η δεξιότερη παραγωγή για την συγκεκριμένη συμβολοσειρά.

ΣΑ Ολίσθησης Ελάττωσης (shift-reduce) ▪Γενική κατηγορία ΣΑ από κάτω προς τα πάνω ▪Χρησιμοποιούν στοίβα για να αποθηκεύουν τερματικά και μη- τερματικά σύμβολα. ▪Ενέργειες ενός ΣΑ: Ολίσθηση (shift), όπου ένα σύμβολο εισόδου τοποθετείται στη στοίβα Ελάττωση (reduce), όπου ένα ή περισσότερα σύμβολα από την κορυφή της στοίβας αντικαθίστανται από ένα μη- τερματικό σύμβολο. Αποδοχή (accept), όταν η στοίβα περιέχει το αρχικό σύμβολο της γραμματικής Σφάλμα (error), όταν εμφανιστεί συντακτικό σφάλμα.

Παράδειγμα Ανάλυσης Ολίσθησης Ελάττωσης

Αποφάσεις κατά την διάρκεια της Συντακτικής Ανάλυσης Ε ::= Ε "+" Τ | Τ T ::= Τ "*" F | F F ::= "id" | "(" E ")" ▪Ελάττωση με κανόνα Ε::=Τ ή ολίσθηση? ▪Ελάττωση με τον κανόνα Τ::=Τ*F ή T::=F?

Συγκρούσεις Ολίσθησης Ελάττωσης (shift-reduce) ▪Έστω η γραμματική: S ::= "if" E "then" S | "if" E "then" S "else" S | O ▪και η ακόλουθη είσοδος: if E1 then if E2 then S1 else S2 ▪Ένας συντακτικός αναλυτής ολίσθησης ελάττωσης σε κάποια στιγμή θα περιέχει: Στοίβα Είσοδος $if E then if E then S1 else S2 ▪Τι θα πρέπει να γίνει ολίσθηση ή ελάττωση? ▪Σύγκρουση ολίσθησης-ελάττωσης.

Συγκρούσεις Ελάττωσης – Ελάττωσης (ii) ▪Έστω η συμβολοσειρά id(id,id) οπότε σε μια δεδομένη στιγμή θα περιέχεται στην στοίβα ΣτοίβαΕίσοδος $id(id,id) ▪είναι δεδομένο ότι θα πρέπει να ελαττωθεί το id αλλά με ποίον από τους δύο κανόνες; (5) parameter ::= "id" (7) expr ::= "id" ▪Αν το πρώτο id είναι διαδικασία τότε ο κανόνας (5) είναι σωστός, αν το id είναι πίνακας, τότε ο κανόνας (7) είναι σωστός. ▪Σύγκρουση ελάττωσης-ελάττωσης

LR(k) Συντακτικοί Αναλυτές ▪Αποφεύγουμε ΣΑ με συγκρούσεις, ώστε να έχουμε ντετερμινιστικούς συντακτικούς αναλυτές. ▪LR(k) (Left-to-right, Rightmost derivation, k lookahead symbols): Διαβάζουν συμβολοσειρά εισόδου από αριστερά προς τα δεξιά, κατασκευάζουν το συντακτικό δένδρο χρησιμοποιώντας την αριστερότερη παραγωγή, διαβάζοντας k προπορευόμενα σύμβολα. Υλοποίηση με αυτόματα στοίβας ειδικής μορφής. Υλοποίηση LR(k) για k μεγαλύτερο του 1 είναι ιδιαίτερα πολύπλοκη. LR(1), SLR(1), LALR(1)

Γιατί Συντακτικούς Αναλυτές LR ▪Είναι δυνατό να κατασκευαστούν ΣΑ LR σχεδόν για κάθε προγραμματιστική δομή και καλύπτουν τις ανάγκες της συντριπτικής πλειοψηφίας των γλωσσών προγραμματισμού. ▪Είναι η γενικότερη μέθοδος συντακτικής ανάλυσης ελάττωσης- ολίσθησης και μπορεί να υλοποιηθεί αποδοτικά. ▪Είναι εύκολη η ανίχνευση λαθών. ▪Οι κλάση των γραμματικών LR είναι υπερσύνολο εκείνων των γραμματικών LL.

Συντακτικοί Αναλυτές LR

ΣΑ LR(1) ▪Οι ΣΑ της κατηγορίας υλοποιούνται με αυτόματο στοίβας της μορφής: ΠΙΝΑΚΕΣ ΕΛΕΓΧΟΥ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ ACTIONNEXT ΑΛΓΟΡΙΘΜΟΣ LR a1a1 a2a2 amam EOF... xnxn s1s1 x1x1 s0s0 snsn

Αυτόματο LR ▪Ενδιάμεση μνήμη για ανάγνωση συμβολοσειράς εισόδου. ▪Πεπερασμένο σύνολο καταστάσεων Κ. ▪Στοίβα όπου τοποθετούνται εναλλάξ σύμβολα της γραμματικής και καταστάσεις του αυτομάτου από το Κ. ▪Πίνακας πράξεων ACTIOΝ, με μια γραμμή για κάθε κατάσταση K και μια στήλη για κάθε τερματικό σύμβολο της γραμματικής και το σύμβολο EOF. ▪Πίνακας επόμενης κατάστασης NEXT, με μια γραμμή για κάθε κατάσταση του Κ και μια στήλη για κάθε σύμβολο της γραμματικής (τερματικό ή μη- τερματικό).

Λειτουργία ΣΑ LR ▪Αρχικά, η στοίβα περιέχει μόνο η αρχική κατάσταση. ▪Έστω ότι στην κορυφή της στοίβας βρίσκεται η κατάσταση s και το σύμβολο εισόδου είναι a. Τότε αν το κελί του πίνακα action(s,a) περιέχει: πράξη ολίσθησης, τότε το a τοποθετείται στη στοίβα και μετά από αυτό η κατάσταση next(s,a). πράξη ελάττωσης, με ένα κανόνα της μορφής Α::=β, τότε αφαιρούνται από τη στοίβα |β| ζεύγη καταστάσεων-συμβόλων. Η επόμενη κατάσταση καθορίζεται από την ενέργεια s''=next(s',Α) (πίνακας ΝΕΧΤ), όπου s' το στοιχείο στην κορυφή της στοίβας. Τοποθετείται στη στοίβα το Α και η κατάσταση s''. πράξη αποδοχής, τότε ο ΣΑ σταματά.

Αναπαράσταση Πινάκων ΣΑ ▪Αναπαράσταση στοιχείων του πίνακα ΣΑ: si : Στη θέση Μ(j,x), σημαίνει ότι η επόμενη κατάσταση θα είναι η i, και θα γίνει η πράξη της ολίσθησης. rk : Στην θέση Μ(j,x), σημαίνει ότι γίνεται ελάττωση με τον κανόνα k (υποθέτουμε αρίθμηση των κανόνων), και acc : αποδοχή.

Παράδειγμα Πίνακα ΣΑ LR (1)Ε ::= Ε "+" Τ (2)Ε ::= Τ (3)T ::= Τ "*" F (4)T::=F (5)F::="(" E ")" (6)F ::= "id"

Παράδειγμα ανάλυσης της id * id + id

Κατασκευή Πινάκων ACTION & GOTO (NEXT) ▪Αρκετοί αλγόριθμοι κατασκευής πινάκων: LR(0): αν η γραμματική ανήκει στην κατηγορία LR(0). Δεν χρησιμοποιείται πολύ στην πράξη. SLR(1): Μεγαλύτερο εύρος γραμματικών αλλά αρκετά περιοριστικός. LALR(1): Χρησιμοποιείται περισσότερο στην πράξη. LR(1): Πολύ μεγάλο μέγεθος πινάκων. ▪Οι κατηγορίες γλωσσών που αναγνωρίζονται από τους αντίστοιχους ΣΑ είναι: LR(0)  SLR(1)  LALR(1)  LR(1)

Αλγόριθμος SLR(1) Κατασκευή των Πινάκων ACTION GOTO (ΝΕΧΤ)

Κατασκευή Πίνακα SLR(1) ▪Για την κατασκευή του αντίστοιχου πίνακα συντακτικής ανάλυσης απαιτείται ο ορισμός: της έννοιας του στοιχείου (item), της συνάρτησης CLOSURE(I) (κλεισίματος) ενός συνόλου στοιχείων, της συνάρτησης GOTO(I,X) ενός συνόλου στοιχείων και ενός συμβόλου της γραμματικής, η οποία επιστρέφει ένα σύνολο στοιχείων, ορισμός των καταστάσεων του αυτομάτου. ▪Αλγόριθμος κατασκευής του πίνακα βάσει των παραπάνω.

Στοιχεία (Items) ▪Στοιχείο είναι ένας κανόνας παραγωγής, στον οποίο έχει προστεθεί το σύμβολο " ● ". Για παράδειγμα στον κανόνα Α::= ΧΥΖ αντιστοιχούν τα ακόλουθα στοιχεία Α::= ● ΧΥΖ, Α::= Χ ● ΥΖ, Α::= ΧΥ ● Ζ Α::= ΧΥΖ ● ▪Το σημείο " ● " σηματοδοτεί το σημείο της συμβολοσειράς που έχουμε ήδη δει, και το τι περιμένουμε να δούμε στη συνέχεια.

Συνάρτηση CLOSURE(I) ▪Η συνάρτηση CLOSURE (κλείσιμο) ενός συνόλου στοιχείων Ι της γραμματικής δίνεται από: όλα τα στοιχεία του συνόλου Ι, για κάθε στοιχείο του Ι της μορφής Α::=α ● Ββ το οποίο ανήκει στο σύνολο CLOSURE(I) και για κάθε κανόνα της γραμματικής της μορφής Β::=γ, το στοιχείο Β::= ● γ ανήκει στο CLOSURE(I). Το παραπάνω βήμα εκτελείται μέχρι να μη ν μεταβάλλεται το CLOSURE(I).

Παράδειγμα Υπολογισμού CLOSURE(I) ▪Έστω η (επαυξημένη) γραμματική: Ε' ::= Ε Ε ::= Ε "+" Τ | Τ T ::= Τ "*" F | F F ::= "id" | "(" E ")" ▪Εάν θεωρήσω το σύνολο I 0 = {E' ::= ● E} η συνάρτηση CLOSURE(I 0 ) είναι: CLOSURE(I 0 ) = {E'::= ● E; E::= ● E+T; E::= ● T; T ::= ● T * F; T ::= ● F; F ::= ● (E); F ::= ● id }

Συνάρτηση GOTO(Ι,Χ) ▪Η συνάρτηση GOTO(I,X) απεικονίζει ένα σύνολο στοιχείων Ι και ένα σύμβολο της γραμματικής Χ (τερματικό ή μη) σε ένα σύνολο Ι' στοιχείων τέτοιων ώστε: GOTO(I,X) = CLOSURE(J) J = {A::=αX ● b | A::=α ● Xb  I} ▪Παράδειγμα Υπολογισμού GOTO: I 1 ={E'::=E ● ; E::=E ● +T} GOTO(I 1,*) = {} GOTO(I 1,+)={E::=E+ ● T; T::= ● T*F;T::= ● F; F::= ● id; F::= ● (E) } Ε' ::= Ε Ε ::= Ε "+" Τ | Τ T ::= Τ "*" F | F F ::= "id" | "(" E ")"

Καταστάσεις του Αυτομάτου ▪Αρχικά το αυτόματο δεν έχει "διαβάσει" κανένα σύμβολο. Άρα η αρχική του κατάσταση είναι: Ε' ::= ● E ▪Φυσικά, το Ι 0 =CLOSURE(E'::= ● E) CLOSURE(E'::= ● E) = {E'::= ● E; E::= ● E+T; E::= ● T; T ::= ● T * F; T ::= ● F; F ::= ● (E); F ::= ● id } ▪Αν το αυτόματο διαβάσει ένα σύμβολο a τότε η κατάσταση του θα δίνεται από την I 1 =GOTO(I 0,a) ▪Πχ. "ανάγνωση" σύμβολου id, άρα GOTO(I 0,id)={ F ::= id ● } = I 1

Κατασκευή Καταστάσεων ▪Έστω μια γραμματική G=(T,N,P,S) και η επαυξημένη γραμματική: G'={T,N  S',P  (S'::=S),S'} ▪Οι καταστάσεις Ι 0, Ι 1,...Ι n προκύπτουν από την ακόλουθη διαδικασία: I 0 = CLOSURE({S'::= ● S}) C = {I 0 } repeat forall Ι i  C forall α  (T  N) if GOTO(Ι i,α)  and GOTO(Ι i,α)  C then I j = GOTO(Ι i,α) C = C  { I j } until C unchaged

Κατασκευή Πίνακα SLR(1) ΣΑ για μια Γραμματική G 1Δημιουργία των καταστάσεων των στοιχείων της G. 2Για μια κατάσταση Ι i, αν υπάρχει στο Ι i κανόνας: i.Α::=α ● aβ και a είναι τερματικό σύμβολο και υπάρχει GOTO(Ι i,a)= Ι j τότε action(i,a)=shift j ii.Α::=α ● τότε για κάθε a στο FOLLOW(A) με Α  S', τότε action(i,a)= reduce A::=α iii.S'::=S ● τότε action(i,EOF) = accept 3Για κάθε μη-τερματικό σύμβολο Α αν GOTO(Ι i,A)= Ι j τότε next(i,A)= j 4Όλες οι άλλες θέσεις του πίνακα παίρνουν την τιμή error. 5Η αρχική κατάσταση είναι η Ι 0 =CLOSURE({S'::= ● S})

Παράδειγμα Υπολογισμού SLR(1) Πίνακα I 0 ={E'::= ● E; E::= ● E+T; E::= ● T; T ::= ● T * F;T ::= ● F; F ::= ● (E);F ::= ● id } I 1 =GOTO(I 0,E)={E'::=E ● ;E::=E ● +T} I 2 =GOTO(I 0,T)={E::=T ● ; T ::=T ● * F} I 3 =GOTO(I 0,F)={T ::= F ● } I 4 =GOTO(I 0, ( )={F ::=( ● E);E::= ● E+T; E::= ● T; T ::= ● T * F; T ::= ● F; F ::= ● (E); F ::= ● id } I 5 =GOTO(I 0, id) = { F ::= id ● } I 6 =GOTO(I 1, +)={E::=E+ ● T;T ::= ● T * F; T ::= ● F; F ::= ● (E); F ::= ● id } I 7 =GOTO(I 2, *)={T ::=T * ● F;F ::= ● (E);F ::= ● id }... Ε' ::= Ε Ε ::= Ε "+" Τ Ε ::= Τ T ::= Τ "*" F T ::=F F ::= "(" E ")" F ::= "id"

Παράδειγμα Κατασκευή Πίνακα I 1 =GOTO(I 0,E)I 6 =GOTO(I 1, +) I 2 =GOTO(I 0,T)και I 1 ={E'::=E ● ;...} I 3 =GOTO(I 0,F)I 7 =GOTO(I 2, *) I 4 =GOTO(I 0, ( )I 2 ={E::=T ● ;...} & I 5 =GOTO(I 0, id) FOLLOW(E)={+,),EOF}

Πλήρης Πίνακας SLR (1)Ε ::= Ε "+" Τ (2)Ε ::= Τ (3)T ::= Τ "*" F (4)T::=F (5)F::="(" E ")" (6)F ::= "id"

Παρατηρήσεις ▪Προφανώς, αν σε ένα κελί του πίνακα αντιστοιχούν δύο τιμές, όπως αυτές ορίστηκαν παραπάνω, τότε η γραμματική δεν είναι SLR(1). ▪Η υλοποίηση ΣΑ LR γίνεται συνήθως με μετα-εργαλεία, όπως είναι το bison (yacc).

Ανάνηψη από σφάλματα στη Συντακτική Ανάλυση LR

Ανάνηψη από σφάλματα σε ΣΑ LR(1) ▪Ο εντοπισμός σφάλματος γίνεται όταν διαπιστωθεί ότι για το συγκεκριμένο συνδυασμό συμβόλου στοίβας και συμβόλου εισόδου, ο πίνακας ACTION είναι κενός. Ανάνηψη από λάθη με την μέθοδο πανικού Ανάνηψη από λάθη σε επίπεδο φάσης.

Μέθοδος Πανικού ▪Ανιχνεύεται η στοίβα μέχρι να βρεθεί μια κατάσταση s, η οποία να έχει μια μετάβαση για ένα συγκεκριμένο σύμβολο Α, δηλ. GOTO(s,A) να μην είναι κενό. ▪Αφαιρούνται από την είσοδο, ένα η περισσότερα σύμβολα μέχρι να βρεθεί ένα, το οποίο να ανήκει στο FOLLOW(A). ▪Τοποθετείται στη στοίβα η κατάσταση GOTO(s,A) και συνεχίζεται η συντακτική ανάλυση. ▪Καθορίζει ότι το σφάλμα βρίσκεται στο Α και αφαιρεί τόσο από την στοίβα όσο και από την είσοδο σύμβολα σχετιζόμενα με το Α.

Ανάνηψη από λάθη σε επίπεδο φάσης. ▪Δημιουργείται μια ρουτίνα λάθους για κάθε κενή θέση του πίνακα συντακτικής ανάλυσης. ▪Η συνάρτηση προσθέτει ή αφαιρεί κατάλληλα σύμβολα τόσο στη στοίβα όσο και στην είσοδο ή ακόμα αλλαγή ή αντιμετάθεση δύο συμβόλων. ▪Προσοχή πρέπει να δοθεί στη αποφυγή βρόγχων.

Σύνοψη ▪Εισαγωγή στην ανάλυση από πάνω προς τα κάτω. Οι έννοιες της ελάττωσης και ολίσθησης Συγκρούσεις Πλεονεκτήματα της LR ανάλυσης ▪Συντακτική ανάλυση LR Στοιχεία Συναρτήσεις CLOSURE και GOTO Κατασκευή Πίνακα SLR(1) ▪Ανάνηψη από σφάλματα