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

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

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

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

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

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

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

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

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

Κατηγορικές Γραµµατικές

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

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

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

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

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

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

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

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

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

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

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

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

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

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

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

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

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

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

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

. visual basic. int sum(int a, int b){ return a+b;} : : :

Γλώσσες Προγραμματισμού Μεταγλωττιστές

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

ΚΕΦΑΛΑΙΟ 4 ΒΑΣΙΚΕΣ ΤΕΧΝΙΚΕΣ ΣΥΝΤΑΚΤΙΚΗΣ ΑΝΑΛΥΣΗΣ

ΠΛΗ111. Ανοιξη Μάθηµα 4 ο. Στοίβα. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

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

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

Syntax Analysis Part V

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

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

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

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

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

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

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

Κεφάλαιο 3. Αλγόριθµοι Τυφλής Αναζήτησης. Τεχνητή Νοηµοσύνη - Β' Έκδοση. Ι. Βλαχάβας, Π. Κεφαλάς, Ν. Βασιλειάδης, Φ. Κόκκορας, Η.

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

Συντακτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

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

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

Αναδρομικοί Αλγόριθμοι

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

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

Αναδροµή. Σε αυτήν την (βοηθητική) ενότητα θα µελετηθούν τα εξής : Η έννοια της αναδροµής Υλοποίηση και αποδοτικότητα Αφαίρεση της αναδροµής

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

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

Δομές Δεδομένων (Data Structures)

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

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

Κεφάλαιο 7 : Είδη, Τεχνικές, και Περιβάλλοντα Προγραµµατισµού

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

Δομές Δεδομένων και Αλγόριθμοι

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

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

Syntax Analysis Part I

Κανονικές Γλώσσες. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Ταξινόµηση Mergesort Κεφάλαιο 8. Ε. Μαρκάκης Επίκουρος Καθηγητής

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

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

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

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

ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ, ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΚΑΙ ΔΙΚΤΥΩΝ, ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ

Δένδρα. Μαθηματικά (συνδυαστικά) αντικείμενα. Έχουν κεντρικό ρόλο στην επιστήμη των υπολογιστών :

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

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

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

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

Δομές Δεδομένων. Ενότητα 2: Στοίβες Εισαγωγή-Υλοποίηση ΑΤΔ Στοίβα με Πίνακα-Εφαρμογή Στοίβας: Αντίστροφη Πολωνική Γραφή. Καθηγήτρια Μαρία Σατρατζέμη

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

HY118- ιακριτά Μαθηµατικά

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

Transcript:

Top Down Bottom Up Συντακτική Ανάλυση Γιώργος Μανής δεοµένης της παραγωγής X αβ, ο συµβολισµός X α β αναπαριστά µία κατάσταση στη οποία το α έχει ήδη αναγνωριστεί και το β προσδοκάται να αναγνωριστεί. Οσυµβολισµός X α β, i σηµαίνει ότι η παραγωγή που αναγνωρίζεται είναι η (X αβ) έχει ήδη αναγνωριστεί µέχρι τη θέση που βρίσκεται η τελεία η αναγνώριση έχει ξεκινήσει από το σηµεί i της ακολουθίας εισόδου Ο συντακτικός αναλυτής πραγµατοποιεί τρεις κινήσεις Prediction: Για κάθε κατάσταση που ανήκει στο σύνολο καταστάσεων S(k) που έχει τη µορφή (X α Y β, j) πρόσθεσε το (Y γ, k) στο S(k) για κάθε κανόνα που έχει το Y στο αριστερό του µέλος. Scanning: Εάν το a είναι το επόµενο σύµβολο στην ακολουθία εισόδου, για κάθε κατάσταση που ανήκει στο σύνολο S(k) και έχει τη µορφή (X α a β, j), πρόσθεσε το (X α a β, j) στο σύνολο καταστάσεων S(k+1). Completion: Για κάθε κατάσταση του S(k) που έχει τη µορφή (X γ, j), βρες τις καταστάσεις του S(j) που έχουν τη µορφή (Y α X β, i) και πρόσθεσε το (Y α X β, i) στο S(k). Θεωρούµε τηγραµµατική : P S S S + M S M M M * T M T T number µε είσοδο: 2 + 3 * 4 1

Συµφραζόµενα (bottom up - CYK) εξετάζει κάθε πιθανή υποακολουθία µιας ακολουθίας λέξεων για να βρει υποσυµβολοσειρές που ξεκινούν από ένα σηµείο i και έχουν µήκος ξ και µπορούν να παραχθούν από τον κανόνα Rk. αρχικά ξεκινάει µε j=1 και µετά συνεχίζει για j=2 κ.ο.κ για j=2 και µεγαλύτερο θεωρεί κάθε πιθανό διαχωρισµό της υποακολουθίας σε δύο τµήµατα και ελέγχει να δει έαν κάποια παραγωγή P Q R τέτοια ώστε το Q ταιριάζει µε τοπρώτοµέρος και το R µε τοδεύτερο. Επιτυχής αναγνώριση υπάρχει όταν ταιριάξει η συµβολοσειρά εισόδου µε τοαρχικόσύµβολο της γραµµατικής Συµφραζόµενα (bottom up - CYK) Συντακτική Ανάλυση για Γραµµατικές µε Συµφραζόµενα S -> XY X -> YX Y -> ZX Z -> ZY X -> a Y -> b Z -> a X -> c Z -> d 1 begin 2 Ι := { S } 3 D := 4 while Ι do begin 5 Ι := Ι y, y Ι, y = 1 6 R := { x x : y e x, y e y, x A } 7 if A R then SUCCESS 8 else begin 9 x R, x I, x D, Ι := I { x } 10 end 11 D := D { y } 12 end 13 FAIL 14 end Συντακτική Ανάλυση για Γραµµατικές µε Συµφραζόµενα Το Σύνολο FIRST S abc S asq bqc bbcc cq Qc Ταίριασµα Αρχικά S µε S abc, S asq asq µε S abc, S asq aasqq µε aabcq µε cq Qc Στοιχεία που προστίθενται στο Ι S abc, asq abc, aabcq, aasqq abc, aabcq abc, aabqc D S S, asq S, asq, aasqq S, asq, aasqq, aabcq Έστω η γραµµατική G=(T,N,P,S) και α є (ΤUΝ)* το σύνολο FIRST(a) T U {ε} ορίζεται ως εξής: αν υπάρχει δυνατή παραγωγή της µορφής α * cβ, µε cєt και βє(τuν)* τότε cєfirst(a) αν υπάρχει δυνατή παραγωγή της µορφής α * ε, τότε εєfirst(a) µε άλλα λόγια το FIRST(α) περιέχει όλα τα τερµατικά σύµβολα µετα οποία είναι δυνατόν να αρχίζουν οι συµβολοσειρές που παράγονται από το α. Αν η α παράγει την κενή συµβολοσειρά, τότε το σύνολο FIRST(α) περιέχει και το ε aabqc µε bqc bbcc aabbcc S, asq, aasqq, aabcq, aabqc 2

Το Σύνολο FOLLOW FIRST και FOLLOW παράδειγµα Έστω η γραµµατική G=(T,N,P,S) και A є N το σύνολο FOLLOW(A) T U {eof} ορίζεται ως εξής: αν υπάρχει δυνατή παραγωγή της µορφής S * aacβ, µε cєt και a,βє(τuν)* τότε cєfollow(α) αν υπάρχει δυνατή παραγωγή της µορφής S * aa, aє(τuν)* τότε eofєfollow(α) µε άλλα λόγια το FOLLOW(Α) περιέχει όλα τα τερµατικά σύµβολα τα οποία µπορούν να ακολουθούν το Α σε ένα προτασιακό τύπο. Αν το Α µπορεί να είναι το τελευταίο σύµβολο σε ένα προτασιακό τύπο, τότε το σύνολο FOLLOW(A) περιέχει και το eof Ε -> ΤΕ Ε -> ε Ε -> + ΤΕ Τ -> F T T -> ε Τ ->* F Τ F -> ( E ) F -> id FIRST(E )= { +, ε } FIRST(Τ )= { *, ε } FIRST(F)= { id, ( } FIRST(E)=FIRST(T)=FIRST(F)={ id, ( } FOLLOW(E) = { eof, ) } FOLLOW(T) = FIRST(E ) U FOLLOW(E) U FOLLOW(E ) = = { eof, ), + } FOLLOW(E ) = FOLLOW(E) = { eof, ) } FOLLOW(T ) = FOLLOW(T) = { eof, ), + } FOLLOW(F) = FIRST(T ) U FOLLOW(T ) = = { *, eof, ), + } Γραµµατική LL(1) Γραµµατικές LL(1) τεχνικές που χρησιµοποιούνται για τη µετατροπή γραµµατικών σε LL(1) Αν Α->α και Α->β δύο διαφορετικοί κανόνες της γραµµατικής τότε θα πρέπει FIRST(a)IFIRST(β)=Ø αντικατάσταση A -> a 1 a 2 a n B -> β 1 Αβ 2 Αν Α->ε κανόνας της γραµµατικής τότε θα πρέπει FIRST(Α)IFOLLOW(A)=Ø δίνει A -> a 1 a 2 a n Β -> β 1 a 1 β 2 β 1 a 2 β 2 β 1 a n β 2 αριστερή παραγοντοποίηση απαλοιφή έµµεσης και άµεσης αναδροµής Γραµµατικές LL(1) Γραµµατικές LL(1) τεχνικές που χρησιµοποιούνται για τη µετατροπή γραµµατικών σε LL(1) αντικατάσταση αριστερή παραγοντοποίηση Α -> αβ 1 αβ 2 αβ n δίνει Α -> αβ Β -> β 1 β 2 β n απαλοιφή έµµεσης και άµεσης αναδροµής τεχνικές που χρησιµοποιούνται για τη µετατροπή γραµµατικών σε LL(1) αντικατάσταση αριστερή παραγοντοποίηση απαλοιφή έµµεσης και άµεσης αναδροµής Α -> Aα 1 Aα 2 Aα n β 1 β 2 β m δίνει A -> β 1 B β 2 B β m B B-> α 1 B α 2 B α n B ε 3

Συντακτικοί Αναλυτές Αναδροµικής Κατάβασης Συντακτικός Αναλυτής LL(1) για κάθε µη τερµατικό σύµβολο υλοποιείται µία συνάρτηση όταν συναντάται µη τερµατικό σύµβολο στη γραµµατική καλείται η αντίστοιχη συνάρτηση όταν συναντείται τερµατικό σύµβολο στη γραµµατική πρέπει να υπάρχει και το αντίστοιχο σύµβολο στη συµβολοσειρά εισόδου περισσότερο αναλυτικά παρουσιάζεται η αναδροµική κατάβαση στις διαφάνειες του µαθήµατος «Μεταφραστές» Κατασκευή πίνακα συντακτικής ανάλυσης LL(1) ΓιακάθεκανόναΑ-> α καιγιακάθετερµατικό σύµβολο b που ανήκει στο FIRST(a) πρόσθεσε τον κανόνα Α -> α στηθέσημ(α,b) ΓιακάθεκανόναΑ-> α καιεάνανήκειτοεστοfirst(a) τότε για κάθε τερµατικό σύµβολο b που ανήκει στο FOLLOW(a) πρόσθεσε τον κανόνα Α -> α στηθέσημ(α,b) Συντακτικός Αναλυτής LL(1) Συντακτικός Αναλυτής LL(1) Ε -> ΤΕ Ε -> ε Ε -> + ΤΕ Τ -> F T T -> ε Τ ->* F Τ F -> ( E ) F -> id E id E->TE FIRST(E )= { +, ε } FIRST(Τ )= { *, ε } FIRST(E)=FIRST(T)=FIRST(F)={ id, ( } FOLLOW(E ) = FOLLOW(E) = { eof, ) } FOLLOW(T ) = FOLLOW(T) = { eof, ), + } FOLLOW(F) = { *, eof, ), + } + * ( ) E->TE eof Αν στην κορυφή της στοίβας βρίσκεται το τερµατικό σύµβολο α και το επόµενο σύµβολο της συµβολοσειράς εισόδου είναι το α τότε το α αφαιρείται από τη στοίβα και καταναλώνεται από τη συµβολοσειρά εισόδου Αν στην κορυφή της στοίβας βρίσκεται το µη τερµατικό σύµβολο Α και το επόµενο σύµβολο της συµβολοσειράς εισόδου είναι το α και το Μ(Α,α) περιέχει τον κανόνα Α->β τότε το Α αφαιρείται από τη στοίβα και τοποθετούνται εκεί τα σύµβολα που αποτελούν τη συµβολοσειρά β µε αντίστροφη σειρά Αν κανένα από τα παραπάνω δεν µπορεί να εφαρµοστεί τότε υπάρχει συντακτικό σφάλµα E T T T->FT E ->+TE T ->ε T ->*FT T->FT E ->ε T ->ε E ->ε T ->ε Αν αδειάσει η στοίβα και δεν έχει εξαντληθεί η συµβολοσειρά εισόδου τότε έχουµε συντακτικόσφάλµα Αν αδειάσει η στοίβα και έχει εξαντληθεί η συµβολοσειρά εισόδου τότε έχουµε επιτυχή αναγνώριση F F->id F->(E) Συντακτικός Αναλυτής LR(1) Συντακτική Ανάλυση LR Μπορούν να αναγνωρίσουν οι γλώσσες που περιγράφονται από τις ακόλουθες γραµµατικές LR(0): δεν απαιτεί προεπισκόπηση λεκτικών µονάδων αλλά είναι αρκετά περιοριστική περιγραφή χωρίς πρακτική αξία SLR(1): περιγράφει µεγαλύτερο εύρος γλωσσών µε επίσης µικρή πρακτική αξία LALR(1): χρησιµοποιείται περισσότερο στην πράξη µε εκφραστική ισχύ ανάµεσα στις SLR(1) και LR(1). Χρησιµοποιείται από εργαλεία αυτόµατης µετάφρασης LR(1): µπορεί να περιγράψει πολλές γλώσσες όµως δηµιουργεί µεγάλους πίνακες ελέγχου κάτι που κάνει απαγορευτική τη χρήση του 4

Στοιχείο (item) στον κανόνα Α->xy αντιστοιχούν τρία στοιχεία Α->.xy Α->x.y CLOSURE(I) I CLOSURE(I) Αν το Α->α.Ββ ανήκει στο CLOSURE(I) και υπάρχει κανόνας της µορφής Β->γ τότε και το στοιχείο Β->.γ ανήκειεπίσηςστοclosure(i) Α->xy. το στοιχείο Α->x.y σηµαίνει ότι έχει αναγνωριστεί µέχρι στιγµής το x και αναµένεται να αναγνωριστεί το y Έστω η γραµµατική S->rB B->D B->B,D D->a D->b και το Ι = { S->r.B } Το σύνολο GOTO(I,x) περιέχει όλα τα στοιχεία της γραµµατικής που µπορούν να προκύψουν από τα στοιχεία το Ι, αν αναγνωριστεί το σύµβολο x Έστω η ίδια γραµµατική και I = { B->.D B->.B,D } τότε GOTO(I,B)= { B->B.,D } τότε CLOSURE(I) = { S->r.B B->.D B->.B,D D->.a D->.b } Ιο = { S ->.S S->.rB } Έστω η γραµµατική S ->S S->rB B->D B->B,D D->a D->b θα βρούµε το σύνολο καταστάσεων και θα κατασκευάσουµε τον πίνακα ελέγχου GOTO(Io,S) = I 1 = { S ->S. } GOTO(Io,r) = I 2 ={ S->r.B B->.B,D B->.D D->.a D->.b } GOTO(I 2,B) = I 3 = { S->rB. B->B.,D } GOTO(I 2,D) = I 4 = { B->D. } GOTO(I 2,a) = I 5 = { D->a. } GOTO(I 2,b) = I 6 = { D->b. } GOTO(I 3,, ) = I 7 = { B->B,.D D->.a D->.b } GOTO(I 7,D) = I 8 = { B->B,D. } GOTO(I 7,a) = { D->a. } GOTO(I 7,b) = { D->b. } 5

r, a b eof 0 s2 1 r0 2 s5 s6 3 s7 r1 4 r2 r2 5 r4 r4 6 r5 r5 7 s5 s6 8 r3 S s1 B s3 D s4 s8 Parsing Algorithm: Initialize the stack with S Read input symbol while (true) if Action(top(stack), input) = S NS <- Goto(top(stack),input) push NS Read next symbol else if Action(top(stack), input) = Rk output k pop RHS of production k from stack NS <- Goto(top(stack), LHS_k) push NS else if Action(top(stack),input) = A output valid, return else output invalid, return Συντακτική Ανάλυση SLR(1) και LR(1) 0 Στοίβα Είσοδος ra,b$ Κίνηση s2 Βασικές αδυναµίες συντακτικής ανάλυσης SLR(1) χρησιµοποιούµε τοσύνολοfollow γιαναπάρουµε απόφαση ποιον κανόνα 0r2 a,b$ s5 θα ακολουθήσουµε 0r2a5,b$ r4 το σύνολο FOLLOW παράγεται από πολλούς κανόνες 0r2D4,b$ r2 Βασική ιδέα συντακτικής ανάλυσης LR(1) 0r2B3 0r2B3,7 0r2B3,7b6,b$ b$ $ s7 s6 r5 αν διατηρούσαµε την πληροφορία ποιος κανόνας έβαλε ποιο σύµβολο µέσα στο FOLLOW τότε θα µπορούσαµε νακάνουµε καλύτερη πρόβλεψη για το ποιος κανόνας πρέπει να ελαττωθεί (reduced) η πληροφορία αυτή θα κρατείται κατά την κατασκευή του συνόλου 0r2B3,7D8 $ r3 CLOSURE 0r2B3 $ r1 0S1 $ r0=acc Έστω η γραµµατική Ε -> Ε + (Ε) Ε -> int και το στοιχείο Ε -> Ε + (.Ε) όταν προσθέτουµε στο CLOSURE τα Ε ->.Ε + (Ε) Ε ->.int σηµειώνουµε ότι το αρχικό Ε ακολουθείται από ) και τα στοιχεία γίνονται Ε ->.Ε + (Ε), ) Ε ->.int, ) Στοιχείο LR(1) X -> a.β, c X -> aβ µία παραγωγή c τερµατικό σύµβολο (το επόµενο σύµβολο lookahead) αναζητούµε κάποιο Χ ακολουθούµενο από c υπάρχει κάποιο c στην κορυφή της στοίβας άρα αναζητούµε τώρα να αγνωρίσουµε βc 6

τροποποιούµε τηγραµµατική προσθέτοντας τον κανόνα S -> E και αναζητούµε S ->.E, $ δηλαδή ένα Ε να ακολουθείται από eof Ο νέος τρόπος κατασκευής του CLOSURE Οι LR(1) καταστάσεις Οαριθµός των LR(1) καταστάσεων είναι απαγορευτικά µεγάλος οι LALR(1) είναι συνήθως 10 φορές λιγότερες από τις LR(1) σε µία προσπάθεια να τον µειώσουµε συνενώνουµε παρόµοιες καταστάσεις µε τησυνένωσηαυτήχάνουµεπληροφορία άρα και περιγραφική ικανότητα µπορούν να συνενωθούν στις LALR(1) καταστάσεις 7

8

Συγκρούσεις Συγκρούσεις Επίλυση Συγκρούσεων µε το Εργαλείο Yacc 9