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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εργαστήριο 08 Εισαγωγή στo Yacc

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

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

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

Διαδικασιακός Προγραμματισμός

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΥ

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

Εφαρμοσμένη Πληροφορική ΙΙ (Θ) Είσοδος/Έξοδος Μεταβλητές Τύποι Μεταβλητών Τελεστές και Προτεραιότητα Μετατροπές Μεταξύ Τύπων

Μηχανές Turing (T.M) I

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

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

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

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

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

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

Διακριτά Μαθηματικά ΙΙ Χρήστος Νομικός Τμήμα Μηχανικών Η/Υ και Πληροφορικής Πανεπιστήμιο Ιωαννίνων 2018 Χρήστος Νομικός ( Τμήμα Μηχανικών Η/Υ Διακριτά

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

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

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

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

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

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

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

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

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

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Διαδικασιακός Προγραμματισμός

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

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

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

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΑΕΠΠ Ερωτήσεις θεωρίας

CSC 314: Switching Theory

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

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

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

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

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

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

Ανάλυση της Ορθότητας Προγραμμάτων (HR Κεφάλαιο 4)

Φροντιστήριο 6 Λύσεις

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

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

ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Δομημένος Προγραμματισμός (ΤΛ1006)

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

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

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

Δείκτες και Δομές. Info. Link. typedef struct NodeTag { InfoField Info; struct NodeTag *Link; } NodeType;

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Κατ οίκον Εργασία 3 Σκελετοί Λύσεων

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C

d k 10 k + d k 1 10 k d d = k i=0 d i 10 i.

Transcript:

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

Γραμματικές Μία γραμματική ονομάζεται αναδρομική εφόσον επιτρέπει παραγωγές της μορφής X + p Xq, όπου X N και p, q V *. Επίσης, ονομάζεται αριστερά αναδρομική αν X + Xp και δεξιά αναδρομική αν X + p X. Μία γραμματική λέμε ότι παρουσιάζει αυτοένθεση (self-embedding grammar), αν επιτρέπει παραγωγές της μορφής X + p Xq, όπου X N και p, q V *, με ένα τουλάχιστο από αυτά να είναι τερματικό, δηλαδή (p T) (q T) 0. Λέμε ότι η γλώσσα L παράγεται από τη γραμματική G, αν: L = w w T * ; S G * w Γραμματικές Τύπου 2 (χωρίς συμφραζόμενα) Oι κανόνες παραγωγής έχουν τη μορφή: X q με X N και q N T +

Γραμματικές Μία γραμματική, για να έχει εφαρμογή στην ανάπτυξη κώδικα ανάλυσης, θα πρέπει να διατυπωθεί με τέτοιο τρόπο, ώστε να συντρέχουν κάποιες προϋποθέσεις: Ο ορισμός της να μην περιλαμβάνει πλεονασματικούς κανόνες παραγωγής, οι οποίοι εκτός των επιπτώσεων, που μπορεί να έχουν στην ταχύτητα ανάλυσης των προτάσεων της γλώσσας, μπορεί επίσης να οδηγούν σε λάθη. Ο ορισμός της να μην περιλαμβάνει παραγωγές-ε, για τις οποίες θα μιλήσουμε στη συνέχεια της παραγράφου. Ο ορισμός της να μην περιλαμβάνει κυκλικούς κανόνες παραγωγής. Γραμματική με πλεονασματικούς κανόνες παραγωγής Μη τερματικά σύμβολα: Τερματικά σύμβολα: (i) (ii) (iii) (iv) (v) (vi) Αρχή:

Πλεονασματικοί κανόνες παραγωγής Γραμματική με πλεονασματικούς κανόνες παραγωγής Μη τερματικά σύμβολα: Τερματικά σύμβολα: (i) (ii) (iii) (iv) (v) (vi) Αρχή:

Γραμματικές Γραμματική με κανόνα-ε για τερματισμό αναδρομικού ορισμού Ορισμός γραμματικής με χρήση κανόνα-ε P QR R QR R ε Q x Ορισμός ισοδύναμης γραμματικής χωρίς κανόνα-ε P Q P QP Q x Γραμματική με κυκλικούς κανόνες παραγωγής P Q Q R R P ή P P

Παράδειγμα (1) Πρόταση: (())()

Αυτόματα Στοίβας

Αυτόματα Στοίβας

ΑΣ Λογική Λειτουργίας

ΑΣ Λογική Λειτουργίας

Αυτόματα Στοίβας

Παράδειγμα (1) Αυτόματο στοίβας Πρόταση: (())()

Παράδειγμα (1)

Άσκηση

Γραμματικές και συντακτική ανάλυση Ι Έστω, η γραμματική χωρίς συμφραζόμενα Γ=(Τ,Ν,S,R), όπου Τ={NUMBER,+,-,*,/,(,)} N={E} S=E με κανόνες παραγωγής: E E+E (1) E-E (2) E*E (3) E/E (4) (E) (5) NUMBER (6)

Γραμματικές και συντακτική ανάλυση ΙΙ Η παραπάνω γραμματική μπορεί να αναλύσει την παράσταση (3+7)/(8-6). Πρώτα χρησιμοποιεί τον κανόνα παραγωγής (4) και σχηματίζει το δένδρο: E E / E Μετά σχηματίζει το αριστερό και το δεξί υποδένδρο χρησιμοποιώντας τον κανόνα παραγωγής (5):

Γραμματικές και συντακτική ανάλυση ΙΙΙ (3+7)/(8-6) E E / E ( E ) ( E ) Η ανάλυση συνεχίζει με τα φύλλα Ε στα δύο υποδένδρα. Το Ε στο αριστερό υποδένδρο αναλύεται με τον κανόνα παραγωγής (1) και το Ε στο δεξί υποδένδρο αναλύεται με τον κανόνα παραγωγής (2).

Γραμματικές και συντακτική ανάλυση ΙV (3+7)/(8-6) E E / E ( E ) ( E ) E + E E - E Τέλος όλα τα φύλλα Ε αναλύονται με τον κανόνα παραγωγής (6).

Γραμματικές και συντακτική ανάλυση V (3+7)/(8-6) E E / E ( E ) ( E ) E + E E - E NUMBER NUMBER NUMBER NUMBER

Γραμματικές και συντακτική ανάλυση VI Το αποτέλεσμα της ανάλυσης είναι ένα παράγωγο δένδρο. Όταν η ανάλυση προχωράει πάντα πρώτα με το σχηματισμό των αριστερών υποδένδρων, τότε λέμε ότι η ανάλυση σχηματίζει αριστερές προτασιακές μορφές. Λέμε ότι η συμβολοσειρά είναι μια αριστερή προτασιακή μορφή, αν έχει προκύψει από τις προηγούμενες, εφαρμόζοντας κάθε φορά παραγωγή, που αντικαθιστά το πρώτο μη τερματικό σύμβολο από αριστερά. Αυτό γράφεται ως, q q p lm Μια συμβολοσειρά είναι δεξιά προτασιακή μορφή, αν έχει προκύψει εφαρμόζοντας κάθε φορά παραγωγή, που αντικαθιστά το πρώτο μη τερματικό σύμβολο από δεξιά. Αυτό γράφεται ως * q p rm * q

Γραμματικές και συντακτική ανάλυση VII Λέμε ότι μια γραμματική είναι γραμματική LL(k) αν κάθε της πρόταση μπορεί να προέλθει από την αρχή της μέσω αριστερών προτασιακών μορφών, όπου ο κανόνας που εφαρμόζεται σε κάθε παραγωγή μπορεί να προβλεφθεί με βάση τα k επόμενα σύμβολα της συμβολοσειράς. Όλες οι γλώσσες της οικογένειας LL είναι προσδιοριστικές. Μια γραμματική είναι γραμματική LR(k) αν κάθε της πρόταση μπορεί να παραχθεί από την αρχή της μέσω δεξιών προτασιακών μορφών, που προκύπτουν με εφαρμογή κανόνα ο οποίος μπορεί να ανιχνευθεί με βάση τα k πρώτα τερματικά σύμβολα της προτασιακής μορφής. Όλες οι γλώσσες της οικογένειας LR είναι προσδιοριστικές. Η οικογένεια των γλωσσών LR(1) είναι ακριβώς η οικογένεια των προσδιοριστικών γλωσσών και είναι ευρύτερη από την οικογένεια των γλωσσών LL.

Γραμματικές χωρίς συμφραζόμενα Η σημειογραφία των γραμματικών χωρίς συμφραζόμενα ονομάζεται συχνά μορφή Backus-Naur (Backus-Naur Form, BNF) Μια γραμματική χωρίς συμφραζόμενα αποτελείται από Ένα σύνολο τερματικών συμβόλων T Ένα σύνολο μη τερματικών συμβόλων N Ένα αρχικό σύμβολο S (μη τερματικό) Ένα σύνολο συντακτικών κανόνων Copyright 2005 Elsevier

Γραμματικές χωρίς συμφραζόμενα Γραμματική εκφράσεων με προτεραιότητα και προσεταιριστικότητα Copyright 2005 Elsevier

Γραμματικές χωρίς συμφραζόμενα Συντακτικό δένδρο για τη γραμματική των εκφράσεων (με προτεραιότητα) για το 3 + 4 * 5 Copyright 2005 Elsevier

Γραμματικές χωρίς συμφραζόμενα Συντακτικό δένδρο για τη γραμματική των εκφράσεων (με αριστερή προσεταιριστικότητα) για το 10-4 - 3 Copyright 2005 Elsevier

Συμβολισμοί BNF και EBNF

Συμβολισμοί BNF και EBNF Συμβολισμός EBNF του N. Wirth Μη τερματικά σύμβολα Χρησιμοποιούνται κανονικοί χαρακτήρες, που δεν περικλείονται σε < και >, όπως στην περίπτωση του κλασσικού συμβολισμού BNF. Τερματικά σύμβολα Περιλαμβάνονται σε και, όπως π.χ. το +. Χρησιμοποιείται για το συμβολισμό εναλλακτικών περιπτώσεων. ( και ) Χρησιμοποιείται στην ομαδοποίηση συμβόλων και στην αλλαγή της προτεραιότητας εφαρμογής των άλλων μετασυμβόλων. [ και ] Προαιρετική εμφάνιση ενός συμβόλου ή μιας ομάδας συμβόλων. { και } Προαιρετική επανάληψη ενός συμβόλου ή μιας ομάδας συμβόλων. = Χρησιμοποιείται αντί του ή του ::= στους ορισμούς των κανόνων παραγωγής.. Σημειώνει το τέλος ενός κανόνα παραγωγής. (* και *) Χρησιμοποιούνται για τη διατύπωση σχολίων.

ΠΑΡΑΔΕΙΓΜΑ: Κανόνες Παραγωγής αριθμητικών εκφράσεων σε EBNF S = έκφραση έκφραση = έκφραση + όρος έκφραση - όρος όρος όρος = όρος * παράγοντας όρος / παράγοντας παράγοντας παράγοντας = ( έκφραση ) αριθμός αριθμός = ψηφίο { ψηφίο } ψηφίο = 0 1 2 3 4 5 6 7 8 9. Ας θεωρήσουμε τον κανόνα: έκφραση = έκφραση + όρος έκφραση - όρος όρος Που μπορεί να αντικατασταθεί από τους κανόνες: έκφραση = έκφραση ΤΛ_ΑΘ όρος όρος ΤΛ_ΑΘ= + - έκφραση = όρος {ΤΛ_ΑΘ όρος} 29

Παράγωγα και συντακτικά δένδρα I Ένα παράγωγο δένδρο αναπαριστά τη δομή μιας πρότασης και έχει το χαρακτηριστικό ότι μπορεί να αντιστοιχεί σε περισσότερες από μία παραγωγές. ΠΑΡΑΔΕΙΓΜΑ S = έκφραση. έκφραση = έκφραση ΤΛ έκφραση ( έκφραση ) αριθμός. ΤΛ = + - * /. ΠΡΌΤΑΣΗ: (27-5)*8

Παράγωγα και συντακτικά δένδρα II Παραγωγή μέσω δεξιών προτασιακών μορφών (1) έκφραση έκφραση ΤΛ έκφραση [έκφραση = έκφραση ΤΛ έκφραση] (2) έκφραση ΤΛ αριθμός [έκφραση = αριθμός ] (3) έκφραση * αριθμός [ΤΛ = * ] (4) ( έκφραση ) * αριθμός [έκφραση = ( έκφραση ) ] (5) (έκφραση ΤΛ έκφραση) * αριθμός [έκφραση = έκφραση ΤΛ έκφραση] (6) (έκφραση ΤΛ αριθμός) * αριθμός [έκφραση = αριθμός ] (7) (έκφραση - αριθμός) * αριθμός [ΤΛ = - ] (8) (αριθμός - αριθμός) * αριθμός [έκφραση = αριθμός ] Παραγωγή μέσω αριστερών προτασιακών μορφών (27-5)*8 (1) έκφραση έκφραση ΤΛ έκφραση [έκφραση = έκφραση ΤΛ έκφραση] (2) (έκφραση) ΤΛ έκφραση [έκφραση = ( έκφραση ) ] (3) (έκφραση ΤΛ έκφραση) ΤΛ έκφραση [έκφραση = έκφραση ΤΛ έκφραση] (4) (αριθμός ΤΛ έκφραση) ΤΛ έκφραση [έκφραση = αριθμός ] (5) (αριθμός - έκφραση) ΤΛ έκφραση [ΤΛ = - ] (6) (αριθμός - αριθμός) ΤΛ έκφραση [έκφραση = αριθμός ] (7) (αριθμός - αριθμός) * έκφραση [ΤΛ = * ] (8) (αριθμός - αριθμός) * αριθμός [έκφραση = αριθμός ]

Παράγωγα και συντακτικά δένδρα IIΙ (27-5)*8 έκφραση έκφραση ΤΛ έκφραση ( έκφραση ) * αριθμός έκφραση ΤΛ έκφραση αριθμός - αριθμός

Παράγωγα και συντακτικά δένδρα IV Συντακτικό δένδρο: πιο συμπαγής δομή που παράλληλα περιέχει και την πληροφορία για τη στατική σημασία της πρότασης (27-5)*8 * - 8 27 5

Γραμματικές με ασάφειες Ι Λέμε ότι μια γραμματική περιέχει ασάφειες, όταν σε μια πρότασή της μπορεί να αντιστοιχούν περισσότερα από ένα δένδρα. ΑΣΑΦΕΙΑ ΠΡΟΤΕΡΑΙΟΤΗΤΑΣ ΤΕΛΕΣΤΩΝ S = έκφραση. έκφραση = έκφραση ΤΛ έκφραση ( έκφραση ) αριθμός. ΤΛ = + - * /. ΠΡΟΤΑΣΗ: 27-5*8

Γραμματικές με ασάφειες ΙΙ (1) έκφραση έκφραση ΤΛ έκφραση [έκφραση = έκφραση ΤΛ έκφραση] (2) έκφραση ΤΛ έκφραση ΤΛ έκφραση [έκφραση = έκφραση ΤΛ έκφραση] (3) αριθμός ΤΛ έκφραση ΤΛ έκφραση [έκφραση = αριθμός ] (4) αριθμός - έκφραση ΤΛ έκφραση [ΤΛ = - ] (5) αριθμός - αριθμός ΤΛ έκφραση [έκφραση = αριθμός ] (6) αριθμός - αριθμός * έκφραση [ΤΛ = * ] (7) αριθμός - αριθμός * αριθμός [έκφραση = αριθμός ] έκφραση έκφραση ΤΛ έκφραση έκφραση ΤΛ έκφραση * αριθμός αριθμός - αριθμός

Γραμματικές με ασάφειες ΙΙΙ (1) έκφραση έκφραση ΤΛ έκφραση [έκφραση = έκφραση ΤΛ έκφραση] (2) αριθμός ΤΛ έκφραση [έκφραση = αριθμός ] (3) αριθμός - έκφραση [ΤΛ = - ] (4) αριθμός - έκφραση ΤΛ έκφραση [έκφραση = έκφραση ΤΛ έκφραση] (5) αριθμός - αριθμός ΤΛ έκφραση [έκφραση = αριθμός ] (6) αριθμός - αριθμός * έκφραση [ΤΛ = * ] (7) αριθμός - αριθμός * αριθμός [έκφραση = αριθμός ] έκφραση έκφραση ΤΛ έκφραση αριθμός - έκφραση ΤΛ έκφραση αριθμός * αριθμός

Γραμματικές με ασάφειες ΙV Σωστό δένδρο είναι το δένδρο εκείνο που είναι συμβατό με τη σημασία που θέλει να αποδώσει ο κατασκευαστής σε κάθε στοιχείο της γλώσσας. Για την ασάφεια προτεραιότητας τελεστών απαιτείται η χρήση κανόνων αποσαφήνισης προτεραιοτήτων. S = έκφραση. έκφραση = έκφραση ΤΛ_ΑΘ έκφραση όρος. ΤΛ_ΑΘ = + -. όρος = όρος ΤΛ_ΓΙ όρος παράγοντας. ΤΛ_ΓΙ = * /. παράγοντας = ( έκφραση ) αριθμός.

Γραμματικές με ασάφειες V Η προηγούμενη γραμματική παραμένει δέσμια ασάφειας ως προς την προσεταιριστικότητα των πράξεων: πως γίνεται η ανάλυση της 27-5-8; Η συγκεκριμένη γραμματική αφήνει ανοικτό και το ενδεχόμενο (27-5)-8 αλλά και το ενδεχόμενο 27-(5-8). Συνήθως μας ενδιαφέρει να διασφαλίζουμε αριστερή προσεταιριστικότητα και αυτό επιτυγχάνεται αν ο αντίστοιχος κανόνας της γραμματικής χαρακτηρίζεται από αριστερή και μόνο αριστερή αναδρομικότητα.

Γραμματικές με ασάφειες VΙ Διορθωμένη γραμματική: S = έκφραση. έκφραση = έκφραση ΤΛ_ΑΘ όρος όρος. ΤΛ_ΑΘ = + -. όρος = όρος ΤΛ_ΓΙ παράγοντας παράγοντας. ΤΛ_ΓΙ = * /. παράγοντας = ( έκφραση ) αριθμός. Πρόταση: 27-5*8 έκφραση έκφραση ΤΛ_ΑΘ όρος όρος - όρος ΤΛ_ΓΙ παράγοντας παράγοντας παράγοντας * αριθμός αριθμός αριθμός

Γραμματικές με ασάφειες VΙΙ Πρόταση: 27-5-8 έκφραση έκφραση ΤΛ_ΑΘ όρος έκφραση ΤΛ_ΑΘ όρος - παράγοντας όρος - παράγοντας αριθμός παράγοντας αριθμός αριθμός

Γραμματικές με ασάφειες VΙΙI ΤΟ ΠΡΟΒΛΗΜΑ ΤΟΥ ΜΕΤΕΩΡΟΥ ELSE S = εντολή. εντολή = if έκφραση then εντολή if έκφραση then εντολή else εντολή άλλο. if EK1 then if EK2 then ΕΝΤ1 else ΕΝΤ2

Γραμματικές με ασάφειες IΧ εντολή εντολή if έκφραση then εντολή if έκφραση then εντολή else εντολή EK1 if έκφραση then εντολή else εντολή EK1 if έκφραση then εντολή ENT2 EK2 ENT1 ENT2 EK2 ENT1

Γραμματικές με ασάφειες Χ ΓΡΑΜΜΑΤΙΚΗ ΠΟΥ ΑΠΟΦΕΥΓΕΙ ΤΟ ΠΡΟΒΛΗΜΑ ΤΟΥ ΜΕΤΕΩΡΟΥ ELSE ΜΕ ΤΕΧΝΑΣΜΑ S = εντολή. εντολή = συν_εντολή ασυν_εντολή. συν_εντολή= if έκφραση then συν_εντολή else συν_εντολή άλλο. ασυν_εντολή= if έκφραση then εντολή if έκφραση then συν_εντολή else ασυν_εντολή.

Αναπαράσταση παράγωγου δένδρου #define astemptyprogram 399 #define astprogram 400 #define astemptydeclseq 401 #define astdeclseq 402 #define astdecl 403.............. /* ----------------------------------------------------------- */ /* ----- THE STRUCTURE FOR THE ABSTRACT SYNTAX TREE NODES ---- */ /* ----------------------------------------------------------- */ typedef struct AstNode_tag { int NodeType; struct symbol_tag *SymbolNode; struct AstNode_tag *pastnode[4]; } AstNode;