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

Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Aug 30, 2019

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Μεταγλωττιστές

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

Αγγελική Σγώρα

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

Page 2: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Άδειες Χρήσης

• Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

• Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.

2

Page 3: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Χρηματοδότηση • Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα

πλαίσια του εκπαιδευτικού έργου του διδάσκοντα.

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

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

3

Page 4: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

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

Page 5: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Σκοποί ενότητας

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

5

Page 6: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Περιεχόμενα ενότητας (1/3)

• Φάσεις της μεταγλώττισης.

• Συντακτική ανάλυση.

• Γραμματικές.

• Ορισμός γραμματικών.

• Ιεραρχία Chomsky.

• Γραμματικές και συντακτική ανάλυση.

6

Page 7: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Περιεχόμενα ενότητας (2/3)

• Διαδικασία της συντακτικής ανάλυσης.

• Συμβολισμοί Backus-Naur Form (BNF) και Extended BNF (EBNF).

• Παράγωγα και συντακτικά δένδρα.

• Γραμματικές με ασάφειες.

• Αναπαράσταση παράγωγου δένδρου.

• Καθοδική ανάλυση.

7

Page 8: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Περιεχόμενα ενότητας (3/3)

• Καθοδική ανάλυση με οπισθοδρόμηση.

• Ανάλυση προβλέπουσας αναδρομικής κατάβασης.

• Ανάλυση LL(1).

• Αλγόριθμος ανάλυσης LL(1).

• Απομάκρυνση αριστερής αναδρομικότητας.

• Αριστερή παραγοντοποίηση.

8

Page 9: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Φάσεις της μεταγλώττισης

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

9

Page 10: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Συντακτική ανάλυση (1/2)

• Είσοδος.

– Λεξικές μονάδες.

• Παράγονται κατά τη λεξική ανάλυση.

• Προσπαθεί να ανιχνεύσει τη δομή του προγράμματος.

10

Page 11: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Συντακτική ανάλυση (2/2)

• Αποτέλεσμα.

– Παράγεται μία δομή.

• Ανάλογα με τη μορφή της αποκαλείται είτε παράγωγο είτε συντακτικό δένδρο.

• Πώς μπορεί να παραστασταθεί η σύνταξη της γλώσσας με ακρίβεια και ευκολία;

• Θα πρέπει να βρεθεί η κατάλληλη γραμματική.

11

Page 12: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές (1/6)

12

• Γραμματική. – Ένα σύστημα παραγωγής συμβολοσειρών G.

• Που ορίζεται από μία διατεταγμένη τετράδα της μορφής (T, N,P, S).

• Τ: Αλφάβητο τερματικών συμβόλων.

• Ν: Αλφάβητο μη τερματικών συμβόλων. • Τ∩Ν=∅.

Page 13: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές (2/6)

13

• Ρ: Πεπερασμένο σύνολο κανόνων παραγωγής. • U→ ū. • Με U∈N και ū ∈(Ν ∪ Τ)u.

– Το σύνολο δηλαδή των λέξεων με μήκος μεγαλύτερο ή ίσο του μηδενός.

– Που μπορεί να σχηματισθούν από τα στοιχεία του (Ν ∪ Τ), λεξικού της G: » {x1,…,xn|xi ∈ Ν ∪ Τ, i=1,… }.

Page 14: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές (3/6)

• S: Αρχικό σύμβολο της γραμματικής. – Μη τερματικό σύμβολο.

• Παραγωγή συμβολοσειρών.

– Ξεκινούμε με τη συμβολοσειρά που περιέχει μόνο το αρχικό σύμβολο.

– Από τη συμβολοσειρά αυτή, παράγεται μία νέα.

• Μία υποσυμβολοσειρά της που αντιστοιχεί σε αριστερό μέλος κανόνα, αντικαθίσταται με το αντίστοιχο δεξί μέλος.

14

Page 15: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές (4/6)

• Παραγωγής συμβολοσειρών (Συνέχεια).

• Η διαδικασία επαναλαμβάνεται όσες φορές κριθεί απαραίτητο.

– Όταν προκύψει μία συμβολοσειρά αποτελούμενη μόνο από τερματικά σύμβολα.

• Λέμε ότι αυτή η συμβολοσειρά παράγεται από τη γραμματική.

15

Page 16: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές (5/6)

• Μία γλώσσα.

– Παράγεται από μία γραμματική.

– Ορίζεται ως � L(G) = { α ∈ T * | S ⇒+ α }.

• �Το σύµβολο +.

– Σηµαίνει ότι διενεργούνται ένα ή περισσότερα βήµατα για την παραγωγή της συµβολοσειράς.

16

Page 17: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές (6/6)

• Μία γραμματική G=(T,N,P,S).

– Ορίζει µία γλώσσα L(G) ⊆ T *.

• �Μια γλώσσα χαρακτηρίζεται ως τυπική.

– Όταν υπάρχει γραμματική που την παράγει.

17

Page 18: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ορισμός γραμματικής (1/2)

• Κατά τον ορισμό μίας γραμματικής πρέπει να πληρούνται οι παρακάτω προϋποθέσεις.

– Να μην περιλαμβάνονται πλεονασματικοί κανόνες παραγωγής, που ενδέχεται να:

– Έχουν αρνητικές επιπτώσεις στην ταχύτητα ανάλυσης των προτάσεων της γλώσσας.

– Οδηγούν σε λάθη.

– Να μην περιλαμβάνονται παραγωγές-ε.

• Μόνο στην περίπτωση που υπάρχει ισοδύναμη γραμματική χωρίς κανόνες-ε.

18

Page 19: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ορισμός γραμματικής (2/2)

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

– Να μην περιλαμβάνονται κυκλικοί κανόνες παραγωγής.

19

Page 20: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ιεραρχία Chomsky (1/5)

20

• Οι γραμματικές και τις σχετικές γλώσσες κατατάσσονται σε 4 τύπους:

• Τύπος 3 ⊂ Τύπος 2 ⊂ Τύπος 1 ⊂ Τύπος 0.

• Γραμματικές τύπου 0.

– Δεν διέπονται από κανένα περιορισμό.

Page 21: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ιεραρχία Chomsky (2/5)

21

• Γραμματικές τύπου 1.

– Χαρακτηρίζονται κι ως γραμματικές με συμφραζόμενα.

– Περιέχουν κανόνες της μορφής α→β.

– Η συμβολοσειρά α περιέχει τουλάχιστον ένα μη τερματικό σύμβολο |α|≤|β|.

– Αν το S δεν υπάρχει σε δεξί μέλος κανόνα.

• Οι παραγόμενες γλώσσες μπορούν να περιέχουν την κενή συμβολοσειρά (S→ε).

Page 22: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ιεραρχία Chomsky (3/5)

• Γραμματικές τύπου 2.

– Χαρακτηρίζονται κι ως γραμματικές χωρίς συμφραζόμενα.

– Περιέχουν κανόνες της μορφής Α→α.

• Α: ένα μη τερματικό σύμβολο.

• α: συμβολοσειρά.

– Χρησιμοποιούνται για την περιγραφή του συντακτικού γλωσσών προγραμματισμού.

22

Page 23: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ιεραρχία Chomsky (4/5)

• Γραμματικές τύπου 3.

– Χαρακτηρίζονται κι ως κανονικές γραμματικές.

– Περιέχει κανόνες της μορφής Α→ε ή � Α→aΒ, Α→a.

• Α,Β: Μη τερματικό σύμβολο.

• a: Τερματικό σύμβολο.

– Γλώσσες που αποφασίζονται από πεπερασμένα αυτόματα.

23

Page 24: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ιεραρχία Chomsky (5/5)

• Γραμματικές τύπου 3 (Συνέχεια).

– Χρησιμοποιούνται στη λεξική ανάλυση.

24

Page 25: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές και συντακτική ανάλυση

• Πιθανές Επιλογές.

– Κανονικές Γραμματικές.

• Ευκολία στην υλοποίηση.

• Πρόβλημα.

– ΝΠΑ έχουν πεπερασμένο αριθμό καταστάσεων.

– Γλώσσες χωρίς συμφραζόμενα.

25

Page 26: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Διαδικασία της συντακτικής ανάλυσης (1/2)

• Είσοδος.

– Μια γραμματική του τύπου που υποστηρίζει ο αλγόριθμος.

• Π.χ. γραμματική χωρίς συμφραζόμενα.

– Μια ακολουθία α από τερματικά σύμβολα της γραμματικής.

26

Page 27: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Διαδικασία της συντακτικής ανάλυσης (2/2)

• Έξοδος.

– Απάντηση στο αν η α ανήκει στη γλώσσα που ορίζει η γραμματική.

• Αν ανήκει τότε παράγεται και το συντακτικό δέντρο της α.

27

Page 28: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Συμβολισμοί BNF και EBNF (1/2)

Μη τερματικά

σύμβολα

Κανονικοί χαρακτήρες, που δεν περικλείονται

σε < >

Τερματικά σύμβολα Περιλαμβάνονται σε “ ”

| Συμβολίζει εναλλακτικές περιπτώσεις

( ) Για ομαδοποίηση κι αλλαγή της προτεραιότητας

εφαρμογής των συμβόλων

[ ] Δηλώνει την προαιρετική εμφάνιση των

συμβόλων που περιέχει

{ } Δηλώνει την προαιρετική επανάληψη των

συμβόλων που περιέχει

Πίνακας 1. Συμβολισμοί BNF και EBNF.

28

Page 29: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Συμβολισμοί BNF και EBNF (2/2)

Μη τερματικά

σύμβολα

Κανονικοί χαρακτήρες, που δεν περικλείονται

σε < >

Τερματικά σύμβολα Περιλαμβάνονται σε “ ”

= Χρησιμοποιείται στους ορισμούς των κανόνων

παραγωγής αντί των ή ::=

. Δηλώνει το τέλος ενός κανόνα παραγωγής

(* *) Χρησιμοποιούνται για τη συμπερίληψη σχολίων

Πίνακας 1 (Συνέχεια). Συμβολισμοί BNF και EBNF.

29

Page 30: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Παράδειγμα συμβολισμών BNF και EBNF

• Γραμματική αριθμητικών εκφράσεων.

30

Page 31: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Παράγωγα και συντακτικά δένδρα

• Ένα παράγωγο δένδρο.

– Αναπαριστά τη δομή μίας πρότασης.

– Μπορεί να αντιστοιχεί σε περισσότερες από μία παραγωγές.

31

Page 32: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Παράδειγμα παράγωγων και συντακτικών δένδρων

Έστω S = έκφραση.

Η έκφραση διατυπώνεται ως:

έκφραση τελεστής έκφραση | “(” έκφραση “)” | “αριθμός”

Ο τελεστής διατυπώνεται ως:

“+” | “-” | “*” | “/”

Πρόταση: (32-6)*12

32

Page 33: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Παράγωγα και συντακτικά δένδρα - Συνέχεια (1/6)

• Παραγωγή μέσω δεξιών προτασιακών μορφών.

έκφραση → έκφραση τελεστής έκφραση [έκφραση = έκφραση τελεστής έκφραση].

έκφραση → έκφραση τελεστής αριθμός [έκφραση = “αριθμός”].

έκφραση → έκφραση * αριθμός [τελεστής = “*”].

έκφραση →( έκφραση ) * αριθμός [έκφραση = “(” έκφραση “)”].

33

Page 34: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Παράγωγα και συντακτικά δένδρα - Συνέχεια (2/6)

• Παραγωγή μέσω δεξιών προτασιακών μορφών (Συνέχεια).

έκφραση →(έκφραση τελεστής έκφραση) * αριθμός

[έκφραση = έκφραση τελεστής έκφραση].

έκφραση →(έκφραση τελεστής αριθμός) * αριθμός

[έκφραση = “αριθμός”].

έκφραση →(έκφραση - αριθμός) * αριθμός

[τελεστής = “-”].

έκφραση →(αριθμός - αριθμός) * αριθμός

[έκφραση = “αριθμός”].

34

Page 35: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Παράγωγα και συντακτικά δένδρα - Συνέχεια (3/6)

• Παραγωγή μέσω αριστερών προτασιακών μορφών

έκφραση → έκφραση τελεστής έκφραση

[έκφραση = έκφραση τελεστής έκφραση]

έκφραση → (έκφραση) τελεστής έκφραση

[έκφραση = “(” έκφραση “)”]

έκφραση →(έκφραση τελεστής έκφραση) τελεστής έκφραση

[έκφραση = έκφραση τελεστής έκφραση]

έκφραση → (αριθμός τελεστής έκφραση) τελεστής έκφραση

[έκφραση = “αριθμός”]

35

Page 36: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Παράγωγα και συντακτικά δένδρα - Συνέχεια (4/6)

• Παραγωγή μέσω αριστερών προτασιακών μορφών (Συνέχεια).

έκφραση → (αριθμός - έκφραση) τελεστής έκφραση

[τελεστής = “-”].

έκφραση → (αριθμός - αριθμός) τελεστής έκφραση

[έκφραση = “αριθμός”].

έκφραση → (αριθμός - αριθμός) * έκφραση

[τελεστής = “*”].

έκφραση → (αριθμός - αριθμός) * αριθμός

[έκφραση = “αριθμός”].

36

Page 37: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Παράγωγα και συντακτικά δένδρα - Συνέχεια (5/6)

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

37

Page 38: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Παράγωγα και συντακτικά δένδρα - Συνέχεια (6/6)

• Συντακτικό δένδρο.

– Συμπαγής δομή.

– Περιέχει και την πληροφορία της στατικής σημασίας της πρότασης.

Σχήμα 3. Συντακτικό δέντρο (πηγή: διδάσκων, 2014).

38

Page 39: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (1/18)

• Λέμε ότι μία γραμματική περιέχει ασάφειες.

– Όταν σε μία πρότασή της μπορεί να αντιστοιχούν περισσότερα από ένα δένδρα.

39

Page 40: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (2/18)

• έκφραση → έκφραση τελεστής έκφραση

[έκφραση = έκφραση τελεστής έκφραση].

• έκφραση → έκφραση τελεστής έκφραση τελεστής έκφραση

[έκφραση = έκφραση τελεστής έκφραση].

• έκφραση → αριθμός τελεστής έκφραση τελεστής έκφραση

[έκφραση = “αριθμός”].

• έκφραση → αριθμός - έκφραση τελεστής έκφραση

[τελεστής = “-”].

40

Page 41: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (3/18)

• έκφραση → αριθμός - αριθμός τελεστής έκφραση

[έκφραση = “αριθμός”].

• έκφραση → αριθμός - αριθμός * έκφραση

[τελεστής = “*”].

• έκφραση → αριθμός - αριθμός * αριθμός

[έκφραση = “αριθμός”].

41

Page 42: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (4/18)

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

42

Page 43: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (5/18)

έκφραση → έκφραση τελεστής έκφραση

[έκφραση = έκφραση τελεστής έκφραση].

έκφραση → αριθμός τελεστής έκφραση

[έκφραση = “αριθμός”].

έκφραση → αριθμός - έκφραση

[τελεστής = “-”].

έκφραση → αριθμός - έκφραση τελεστής έκφραση

[έκφραση = έκφραση ΤΛ έκφραση].

43

Page 44: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (6/18)

έκφραση → αριθμός - αριθμός ΤΛ έκφραση

[έκφραση = “αριθμός”].

έκφραση → αριθμός - αριθμός * έκφραση

[τελεστής = “*”].

έκφραση → αριθμός - αριθμός * αριθμός

[έκφραση = “αριθμός”].

44

Page 45: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (7/18)

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

45

Page 46: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (8/18)

• Σωστό δένδρο.

– Το δένδρο που είναι συμβατό με τη σημασία που θέλουμε να αποδώσουμε στο εκάστοτε στοιχείο της γλώσσας.

• Για την αντιμετώπιση της ασάφειας στην προτεραιότητα των τελεστών.

– Χρησιμοποιούνται κανόνες αποσαφήνισης των προτεραιοτήτων.

46

Page 47: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (9/18)

S = έκφραση

• έκφραση = έκφραση τελεστής_πα έκφραση | όρος.

– τελεστής = “+” | “-”.

• όρος = όρος τελεστής_πδ όρος | παράγοντας.

– τελεστής = “*” | “/”.

– παράγοντας = “(” έκφραση “)” | “αριθμός”.

47

Page 48: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (10/18)

• Η προηγούμενη γραμματική δημιουργεί ασάφειες σχετικά με την προσεταιριστικότητα των πράξεων:

– Ανάλυση της 32-6-12.

– Η συγκεκριμένη γραμματική αφήνει ανοιχτά δύο και ενδεχόμενα.

• (32-6)-12.

• 32-(6-12).

48

Page 49: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (11/18)

• Συνήθως μας ενδιαφέρει να διασφαλίζουμε αριστερή προσεταιριστικότητα.

– Αυτό επιτυγχάνεται αν ο αντίστοιχος κανόνας της γραμματικής:

• Χαρακτηρίζεται από αριστερή και μόνο αριστερή αναδρομικότητα.

49

Page 50: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (12/18)

Διορθωμένη γραμματική:

– S = έκφραση.

– έκφραση = έκφραση τελεστής_πα όρος | όρος.

• τελεστής_πα = “+” | “-”.

• όρος = όρος τελεστής_πδ παράγοντας | παράγοντας

– τελεστής_πδ = “*” | “/”.

• παράγοντας = “(” έκφραση “)” | “αριθμός” .

– Πρόταση: 32-5*12.

50

Page 51: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (13/18)

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

51

Page 52: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (14/18)

• Πρόταση: 32-6-12.

Σχήμα 7. Πρόταση 32-6-12, (πηγή: διδάσκων, 2014).

52

Page 53: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (15/18)

• Το πρόβλημα του μετέωρου else.

53

Page 54: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (16/18)

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

54

Page 55: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (17/18)

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

55

Page 56: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Γραμματικές με ασάφειες (18/18)

• Αποφυγή του προβλήματος του μετεώρου else με τέχνασμα.

56

Page 57: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Καθοδική ανάλυση

• Ξεκινά από την αρχή της γραμματικής. – Για να αναπτύξει τη συμβολοσειρά που αναλύει αν αυτή

αποτελεί πρόταση.

• Καμία από τις τεχνικές που εξετάζονται παρακάτω δεν εφαρμόζεται σε αριστερά αναδρομικές γραμματικές.

• Διακρίνουμε δύο τεχνικές. – Οπισθοδρόμηση .

– Πρόγνωση.

57

Page 58: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Καθοδική ανάλυση με οπισθοδρόμηση (1/3)

1. Δοθέντος ενός μη τερματικού συμβόλου.

– Γίνεται εφαρμογή του πρώτου κανόνα της γραμματικής.

2. Στην προτασιακή μορφή που προκύπτει.

– Επιλέγεται το πρώτο από αριστερά μη τερματικό σύμβολο

• Εφαρμόζεται ο πρώτος κανόνας που αναφέρεται σε αυτό.

58

Page 59: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Καθοδική ανάλυση με οπισθοδρόμηση (2/3)

3. Γίνεται επαναληπτική εφαρμογή του βήματος 2.

– Για κάθε ένα από τα μη τερματικά σύμβολα που ακολουθούν.

– Μέχρι τη στιγμή της παραγωγής:

• Μίας σειράς τερματικών συμβόλων ή.

• Τμήματος τερματικών συμβόλων της προτασιακής μορφής.

– Που διαφέρει από το αντίστοιχο τμήμα της συμβολοσειράς εισόδου.

59

Page 60: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Καθοδική ανάλυση με οπισθοδρόμηση (3/3)

3. (Συνέχεια).

– Η δεύτερη περίπτωση μπορεί να είναι αποτέλεσμα εσφαλμένης επιλογής κανόνα.

– Αναιρείται ο κανόνας που εφαρμόσθηκε τελευταίος και χρησιμοποιείται ο επόμενος που ισχύει για το ίδιο μη τερματικό σύμβολο.

– Αν έχουν χρησιμοποιηθεί όλοι οι κανόνες, ο αλγόριθμος.

• Διατηρεί το σύμβολο ως έχει.

• Προχωρά στην αναίρεση του κανόνα για το προηγούμενο μη τερματικό σύμβολο και οπισθοδρομεί στην κατάλληλη θέση της συμβολοσειράς εισόδου.

60

Page 61: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Καθοδική ανάλυση με οπισθοδρόμηση - Παράδειγμα

S = “k” X “n” ή “k” Y

X = “l” ή “m”

Y = “mmn” ή “nnm” Πρόταση: “kmmm”

Σχήμα 10. Καθοδική ανάλυση με οπισθοδρόμηση, (πηγή: διδάσκων, 2014).

61

Page 62: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Καθοδική ανάλυση με οπισθοδρόμηση - Συνέχεια

• Πολύπλοκη.

• Μη αποδοτική.

• Γενική.

– Αναγνωρίζει περισσότερες γλώσσες από ότι οι υπόλοιπες τεχνικές καθοδικής ανάλυσης.

• Αργεί στον εντοπισμό λαθών.

– Η ανάνηψη γίνεται πολύ δύσκολη.

62

Page 63: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης (1/3)

• Στην ανάλυση αναδρομικής κατάβασης.

– Ο κάθε κανόνας που αναφέρεται σε κάποιο μη τερματικό σύμβολο.

• Εκφράζεται από τον ορισμό μιας διαδικασίας που θα το αναγνωρίζει.

63

Page 64: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης (2/3)

• Ένας αναλυτής προβλέπουσας αναδρομικής κατάβασης αποτελείται από:

– Μία καθολική μεταβλητή.

• Που περιέχει την τιμή της τρέχουσας λεξικής μονάδας.

– Μία βοηθητική διαδικασία αναγνώρισης.

• Που ελέγχει αν η τρέχουσα λεξική μονάδα είναι η αναμενόμενη και καλεί τη διαδικασία λεξικής ανάλυσης.

– Για την ανάγνωση της επόμενης λεξικής μονάδας και την ενημέρωση της καθολικής μεταβλητής.

64

Page 65: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης (3/3)

• Ένας αναλυτής προβλέπουσας αναδρομικής κατάβασης αποτελείται από (Συνέχεια):

– Τις διαδικασίες ανάλυσης.

• Που αντιστοιχούν στα μη τερματικά σύμβολα της γραμματικής.

– Μία διαδικασία εκκίνησης.

• Που αφού διαβάσει την πρώτη λεξική μονάδα.

– Καλεί τη διαδικασία που αντιστοιχεί στο μη τερματικό σύμβολο της αρχής.

65

Page 66: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Παράδειγμα

S = έκφραση

έκφραση = έκφραση + όρος ή έκφραση - όρος ή όρος

όρος = όρος * παράγοντας ή όρος / παράγοντας ή παράγοντας

παράγοντας = ( έκφραση ) ή αριθμός

66

Page 67: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (1/26)

• Η προβλέπουσα αναδρομική κατάβαση.

– Στηρίζεται στην πρόγνωση του κατάλληλου κάθε φορά κανόνα.

• Οδηγεί στην παραγωγή του δένδρου της πρότασης.

• Δε μπορεί να εφαρμοσθεί σε αριστερά αναδρομικές γραμματικές.

67

Page 68: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (2/26)

• Ας θεωρήσουμε τη μη αριστερά αναδρομική γραμματική των αριθμητικών εκφράσεων:

S = έκφραση

έκφραση = όρος υπ_όροι

υπ_όροι = + όρος υπ_όροι ή - όρος υπ_όροι ή ε

όρος = παράγοντας υπ_παραγ

υπ_παραγ = * παράγοντας υπ_παραγ ή / παράγοντας υπ_παραγ ή ε

παράγοντας = ( έκφραση ) ή αριθμός

68

Page 69: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

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

• Εναλλακτικά, για το μη τερματικό σύμβολο «έκφραση» μπορούμε να έχουμε μία από τις παρακάτω παραγωγές:

έκφραση όρος υπ_όροι παράγοντας υπ_παραγ υπ_όροι (έκφραση) υπ_παραγ υπ_όροι . . .

έκφραση όρος υπ_όροι παράγοντας υπ_παραγ υπ_όροι αριθμός υπ_παραγ υπ_όροι . . .

69

Page 70: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

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

• Για να στηριχθεί η ανάλυση στην τεχνική της πρόγνωσης.

– Χρειάζεται για κάθε μη τερματικό σύμβολο.

• Να είναι εκ των προτέρων γνωστό τo σύνολο των τερματικών.

– Που είναι δυνατό να εμφανισθούν στην αρχή των συμβολοσειρών, που παράγονται από αυτό.

» Σύνολο FIRST.

70

Page 71: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (5/26)

• Αν η γραμματική περιλαμβάνει κανόνες-ε.

– Για κάθε μη τερματικό σύμβολο που βρίσκεται στο αριστερό μέρος ενός τέτοιου κανόνα.

• Επιβάλλεται και ο υπολογισμός του συνόλου των τερματικών.

– Που μπορεί να εμφανισθούν αμέσως μετά από αυτό.

» Σύνολο FOLLOW.

71

Page 72: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (6/26)

• Ανάλυση πρόγνωσης.

– Δοθείσης μίας παραγωγής A .

• Ο αναλυτής πρέπει να είναι σε θέση να επιλέξει μεταξύ & .

• Σύνολα FIRST.

– Για ένα δεξί μέρος παραγωγής G.

• Ορίζουμε ως FIRST() το σύνολο των αναγνωριστικών που εμφανίζονται πρώτα στις συμβολοσειρές που παράγονται από το .

72

Page 73: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (7/26)

• Δηλαδή ισχύει.

– x FIRST() αν και μόνο αν * x .

• Για κάποια συμβολοσειρά .

• Γραμματική LL(1).

– Αν A και A εμφανίζονται στη γραμματική πρέπει FIRST() FIRST() = .

– Αυτό επιτρέπει στον αναλυτή να προγνώσει με ασφάλεια την παραγωγή που θα χρησιμοποιεί σε κάθε βήμα!.

73

Page 74: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (8/26)

• Δοθείσης μίας γραμματικής που έχει την ιδιότητα LL(1).

– Μπορούμε να γράψουμε διαδικασίες.

• Που να αναγνωρίζουν το αριστερό μέρος της κάθε παραγωγής.

– Ο κώδικας της ανάλυσης είναι απλός και γρήγορος.

74

Page 75: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (9/26)

• Οι γραμματικές με την ιδιότητα LL(1).

– Ονομάζονται προγνώσιμες γραμματικές.

• Γιατί ο αναλυτής μπορεί να «προγνώσει» τη σωστή ανάπτυξη σε κάθε σημείο της ανάλυσης.

• Οι αναλυτές που εκμεταλλεύονται την ιδιότητα LL(1).

– Ονομάζονται αναλυτές πρόγνωσης.

• Μία περίπτωση ανάλυσης πρόγνωσης είναι η ανάλυση προβλέπουσας αναδρομικής κατάβασης.

75

Page 76: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (10/26)

• Παράδειγμα διορθωμένης γραμματικής αριθμητικών εκφράσεων.

• Για την κατασκευή παράγωγου δένδρου:

– Γράφουμε μέσα στις διαδικασίες κώδικα για δημιουργία κόμβου.

– Περνάμε τους κόμβους από διαδικασία σε διαδικασία μέσω μίας στοίβας.

76

Page 77: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (11/26)

• Για την κατασκευή παράγωγου δένδρου (Συνέχεια):

– Αφαιρούμε από τη στοίβα τους κόμβους του δεξιού μέρους της παραγωγής.

• Τους κάνουμε απογόνους του κόμβου του αριστερού μέρους.

• Εισάγουμε τον τελευταίο στη στοίβα.

77

Page 78: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (12/26)

• Για την κατασκευή συντακτικού δένδρου.

– Κατασκευάζουμε λιγότερους κόμβους.

– Χρειάζεται να τους βάζουμε στη στοίβα με την κατάλληλη σειρά.

• Ώστε να εξασφαλίζουμε αριστερή προσεταιριστικότητα.

78

Page 79: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (13/26)

• Γενική μορφή διαδικασιών προβλέπουσας αναδρομικής κατάβασης.

• Αν για το μη τερματικό σύμβολο Χ ορίζεται στη γραμματική ο κανόνας:

...|2|1X pp

79

Page 80: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (14/26)

• Σύνολα first για σύμβολα γραμματικής.

– Για μία σειρά συμβόλων της γραμματικής.

• Ορίζουμε FIRST() ως το σύνολο των αναγνωριστικών.

– Που εμφανίζονται στην αρχή των συμβολοσειρών που παράγονται από την .

80

Page 81: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (15/26)

• Για να υπολογίσετε το FIRST(X) για ένα σύμβολο X.

– Εφαρμόζετε τους επόμενους κανόνες.

• Μέχρι όταν δεν προστίθενται πλέον στο FIRST(X) νέα σύμβολα.

• Αν το X είναι τερματικό.

– Τότε FIRST(X) είναι το {X}.

81

Page 82: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (16/26)

• Αν υπάρχει παραγωγή X .

– Τότε το περιλαμβάνεται στο FIRST(X).

• Αν το X είναι μη τερματικό και X Y1Y2 ... Yk είναι μια παραγωγή.

– Τότε συμπεριλαμβάνουμε στο FIRST(X) κάθε στοιχείο του FIRST(Y1) εκτός από το .

82

Page 83: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (17/26)

• Αν το X είναι μη τερματικό και X Y1Y2 ... Yk είναι μια παραγωγή.

– Τότε συμπεριλαμβάνουμε το τερματικό a στο FIRST(X).

• Αν το a είναι στο FIRST(Yi) και είναι στα FIRST(Yj) για όλα τα 1 j i.

83

Page 84: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (18/26)

• Αν X είναι ένα μη τερματικό και X Y1Y2 ... Yk μία παραγωγή.

– Τότε συμπεριλαμβάνουμε το στο FIRST(X).

• Αν το είναι στα FIRST(Yi) για όλα 1 i k.

84

Page 85: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (19/26)

• Σύνολα first για σειρές συμβόλων της γραμματικής.

– Για να υπολογίσουμε το σύνολο FIRST για μία σειρά X1X2 ... Xn συμβόλων της γραμματικής.

• Εφόσον έχουμε υπολογίσει τα σύνολα FIRST για τα X1, Χ2 , ... , Xn εφαρμόζουμε τα ακόλουθα (βλέπε επόμενη διαφάνεια).

85

Page 86: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (20/26)

• Το FIRST(X1X2 ... Xn) θα περιλαμβάνει:

– Όλα τα σύμβολα του FIRST(X1) εκτός από το .

– Όλα τα σύμβολα του FIRST(Xi) εκτός από το .

• Αν το είναι στα FIRST(Xj) για όλα τα 1 j i.

– Και το .

• Αν είναι στα FIRST(Xi) για όλα τα 1 i n.

86

Page 87: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (21/26)

• Παράδειγμα υπολογισμού συνόλων first.

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

87

Page 88: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (22/26)

• Σύνολα follow για μη τερματικά σύμβολα γραμματικής.

• Για ένα μη τερματικό σύμβολο A ορίζουμε το FOLLOW(A).

– Ως το σύνολο των τερματικών που μπορούν να εμφανισθούν δεξιά του A.

• Σε κάποια προτασιακή μορφή.

88

Page 89: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (23/26)

• Για τον υπολογισμό των FOLLOW(A) για ένα μη τερματικό A.

– Εφαρμόζουμε τους κανόνες που ακολουθούν.

• Μέχρι όταν δεν προστίθενται πλέον νέα σύμβολα στο FOLLOW(A).

• Εισάγουμε το $ στο FOLLOW(S).

– $ είναι το τέλος συμβολοσειράς.

– S είναι η αρχή της γραμματικής.

89

Page 90: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (24/26)

• Αν υπάρχει παραγωγή A B .

– Περιλαμβάνουμε στο FOLLOW(B) όλα τα σύμβολα του FIRST() εκτός του .

• Αν υπάρχει παραγωγή A B.

– Περιλαμβάνουμε στο FOLLOW(B) όλα τα σύμβολα του FOLLOW(A).

90

Page 91: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (25/26)

• Αν υπάρχει παραγωγή A B και το είναι στο FIRST().

– Περιλαμβάνουμε στο FOLLOW(B) όλα τα σύμβολα του FOLLOW(A).

91

Page 92: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση προβλέπουσας αναδρομικής κατάβασης - Συνέχεια (26/26)

• Δεν μπορούν να χρησιμοποιηθούν αριστερά αναδρομικές γραμματικές.

• Δεν μπορούν να χρησιμοποιηθούν γραμματικές, που δεν είναι LL(1), όπως π.χ.:

σειρά_εντολών = εντολή ; σειρά_εντολών ή εντολή

εντολή = τερματικό

92

Page 93: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση LL(1) (1/3)

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

93

Page 94: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση 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

Page 95: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Ανάλυση LL(1) (3/3)

• Όλες οι υπόλοιπες θέσεις του πίνακα M εκφράζουν την αναγνώριση λάθους.

• Παράδειγμα (Γραμματική αριθμητικών εκφράσεων).

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

95

Page 96: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Απομάκρυνση αριστερής αναδρομικότητας (1/2)

• Διακρίνουμε την άμεση και την έμμεση αριστερή αναδρομικότητα.

• Παράδειγμα άμεσης αριστερής αναδρομικότητας:

• Παράδειγμα έμμεσης αριστερής αναδρομικότητας:

......|2pYX

......|1pXY

έκφραση = έκφραση ΤΛ_ΑΘ όρος ή όρος

96

Page 97: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Απομάκρυνση αριστερής αναδρομικότητας (2/2)

• Γενική μορφή άμεσης αριστερής αναδρομικότητας:

• Μετασχηματίζεται στην ισοδύναμη μορφή:

mn qqqpXpXpXX |...||||...|| 2121

'.|...|'|' 21 XqXqXqX m

.|'|...|'|'' 21 XpXpXpX n

97

Page 98: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Απομάκρυνση αριστερής αναδρομικότητας - Παράδειγμα

• Η S = έκφραση.

• Μετασχηματίστηκε στην:

έκφραση = έκφραση + όρος ή έκφραση - όρος ή όρος

όρος = όρος * παράγοντας ή όρος / παράγοντας ή παράγοντας

παράγοντας = ( έκφραση ) ή αριθμός

έκφραση = όρος υπ_όροι

υπ_όροι = + όρος υπ_όροι ή - όρος υπ_όροι ή ε

όρος = παράγοντας υπ_παραγ

υπ_παραγ = * παράγοντας υπ_παραγ ή / παράγοντας υπ_παραγ ή ε

παράγοντας = ( έκφραση ) ή αριθμός

98

Page 99: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

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

• Αλγόριθμος απομάκρυνσης άμεσης και έμμεσης αριστερής αναδρομικότητας.

• Είσοδος.

– Μία γραμματική G χωρίς κυκλικούς κανόνες παραγωγής και κανόνες-ε.

• Έξοδος.

– Μία ισοδύναμη γραμματική χωρίς αριστερή αναδρομικότητα.

99

Page 100: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

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

• Περιγραφή.

– Θεωρούμε τα μη τερματικά σύμβολα.

– Με το δείκτη του καθενός να αντιστοιχεί στη σειρά.

• Με την οποία κάνει την εμφάνισή του ο αντίστοιχος κανόνας στη γραμματική.

100

Page 101: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

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

101

Page 102: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

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

• Κατά την απομάκρυνση της αριστερής αναδρομικότητας.

– Δεν αλλάζει η γλώσσα της γραμματικής.

– Αλλάζει η μορφή των δένδρων που παράγει η επιλεγείσα μέθοδος ανάλυσης.

– Σημαντικότερη συνέπεια:

• Χάνεται η επιθυμητή ιδιότητα της αριστερής προσεταιριστικότητας.

102

Page 103: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Αριστερή παραγοντοποίηση

• Προηγείται οποιασδήποτε προβλέπουσας ανάλυσης.

– Αν για το ίδιο μη τερματικό σύνολο.

• Υπάρχουν δύο ή περισσότεροι κανόνες με το ίδιο πρόθεμα στο δεξί μέρος.

103

Page 104: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

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

104

Page 105: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Αριστερή παραγοντοποίηση -Συνέχεια

• Γενικά, ο κανόνας:

• Μετασχηματίζεται στον:

• Είσοδος.

– Μία γραμματική G.

• Έξοδος.

– Μία ισοδύναμη γραμματική LL(1).

."|""" 21 pypyX

'."" XyX

.|' 21 ppX

105

Page 106: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

Βιβλιογραφία

1. «Μεταγλωττιστές γλωσσών Προγραμματισμού: Θεωρία και Πράξη», Λάζος, Κ.Ε., Κατσαρός και Π.Θ., Καραΐσκος, Ζ.Κ. (2004), Εκδόσεις Θεσσαλονίκη, [ISBN:960-87723-4-6].

2. «Μεταγλωττιστές», Παπασπύρου, Ν.Σ. και Σκορδαλάκης, Ε.Σ (2002), Εκδόσεις Συμμετρία, 2002, [ISBN: 978-960-266-135-2].

106

Page 107: Μεαγλωισές - openclass.teiwm.gr · •Συντακτικό δένδρο. –Συμπαγής δομή. –Περιέχει και την πληροφορία της στατικής

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

107