Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,"— Μεταγράφημα παρουσίασης:

1 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.1 Γραμματικές Ι

2 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.2 Γραμματικές ΙΙ

3 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.3 Γραμματικές ΙΙΙ

4 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.4 Γραμματικές ΙV

5 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.5 Γραμματικές V

6 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.6 Γραμματικές και συντακτική ανάλυση Ι Έστω, η γραμματική χωρίς συμφραζόμενα Γ=(Τ,Ν,S,R), όπου Τ={NUMBER,+,-,*,/,(,)} N={E} S=E με κανόνες παραγωγής: E  E+E (1) | E-E (2) | E*E (3) | E/E (4) | (E) (5) | NUMBER(6)

7 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.7 Γραμματικές και συντακτική ανάλυση ΙΙ Η παραπάνω γραμματική μπορεί να αναλύσει την παράσταση (3+7)/(8-6). Πρώτα χρησιμοποιεί τον κανόνα παραγωγής (4) και σχηματίζει το δένδρο: Μετά σχηματίζει το αριστερό και το δεξί υποδένδρο χρησιμοποιώντας τον κανόνα παραγωγής (5):

8 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.8 Γραμματικές και συντακτική ανάλυση ΙΙΙ Η ανάλυση συνεχίζει με τα φύλλα Ε στα δύο υποδένδρα. Το Ε στο αριστερό υποδένδρο αναλύεται με τον κανόνα παραγωγής (1) και το Ε στο δεξί υποδένδρο αναλύεται με τον κανόνα παραγωγής (2).

9 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.9 Γραμματικές και συντακτική ανάλυση ΙV Τέλος όλα τα φύλλα Ε αναλύονται με τον κανόνα παραγωγής (6).

10 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.10 Γραμματικές και συντακτική ανάλυση V

11 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.11 Το αποτέλεσμα της ανάλυσης είναι ένα παράγωγο δένδρο. Όταν η ανάλυση προχωράει πάντα πρώτα με το σχηματισμό των αριστερών υποδένδρων, τότε λέμε ότι η ανάλυση σχηματίζει αριστερές προτασιακές μορφές. Γραμματικές και συντακτική ανάλυση VI Λέμε ότι η συμβολοσειρά είναι μια αριστερή προτασιακή μορφή, αν έχει προκύψει από τις προηγούμενες, εφαρμόζοντας κάθε φορά παραγωγή, που αντικαθιστά το πρώτο μη τερματικό σύμβολο από αριστερά. Αυτό γράφεται ως, Μια συμβολοσειρά είναι δεξιά προτασιακή μορφή, αν έχει προκύψει εφαρμόζοντας κάθε φορά παραγωγή, που αντικαθιστά το πρώτο μη τερματικό σύμβολο από δεξιά. Αυτό γράφεται ως

12 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.12 Γραμματικές και συντακτική ανάλυση VII Λέμε ότι μια γραμματική είναι γραμματική LL(k) αν κάθε της πρόταση μπορεί να προέλθει από την αρχή της μέσω αριστερών προτασιακών μορφών, όπου ο κανόνας που εφαρμόζεται σε κάθε παραγωγή μπορεί να προβλεφθεί με βάση τα k επόμενα σύμβολα της συμβολοσειράς. Όλες οι γλώσσες της οικογένειας LL είναι προσδιοριστικές. Μια γραμματική είναι γραμματική LR(k) αν κάθε της πρόταση μπορεί να παραχθεί από την αρχή της μέσω δεξιών προτασιακών μορφών, που προκύπτουν με εφαρμογή κανόνα ο οποίος μπορεί να ανιχνευθεί με βάση τα k πρώτα τερματικά σύμβολα της προτασιακής μορφής. Όλες οι γλώσσες της οικογένειας LR είναι προσδιοριστικές. Η οικογένεια των γλωσσών LR(1) είναι ακριβώς η οικογένεια των προσδιοριστικών γλωσσών και είναι ευρύτερη από την οικογένεια των γλωσσών LL.

13 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.13 Συμβολισμοί BNF και EBNF I

14 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.14 Συμβολισμοί BNF και EBNF II ΠΑΡΑΔΕΙΓΜΑ: Γραμματική αριθμητικών εκφράσεων S = έκφραση. έκφραση = έκφραση “+” όρος | έκφραση “-” όρος | όρος. όρος = όρος “*” παράγοντας | όρος “/” παράγοντας | παράγοντας. παράγοντας = “(” έκφραση “)” | αριθμός. αριθμός = ψηφίο { ψηφίο }. ψηφίο = “0” | “1” | “2” | “3” | “4” | “5” | “6” | “7” | “8” | “9”.

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

16 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.16 Παράγωγα και συντακτικά δένδρα II Παραγωγή μέσω δεξιών προτασιακών μορφών Παραγωγή μέσω αριστερών προτασιακών μορφών

17 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.17 Παράγωγα και συντακτικά δένδρα IIΙ

18 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.18 Παράγωγα και συντακτικά δένδρα IV Συντακτικό δένδρο: πιο συμπαγής δομή που παράλληλα περιέχει και την πληροφορία για τη στατική σημασία της πρότασης

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

20 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.20 Γραμματικές με ασάφειες ΙΙ

21 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.21 Γραμματικές με ασάφειες ΙΙΙ

22 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.22 Γραμματικές με ασάφειες ΙV Σωστό δένδρο είναι το δένδρο εκείνο που είναι συμβατό με τη σημασία που θέλει να αποδώσει ο κατασκευαστής σε κάθε στοιχείο της γλώσσας. Για την ασάφεια προτεραιότητας τελεστών απαιτείται η χρήση κανόνων αποσαφήνισης προτεραιοτήτων. S = έκφραση. έκφραση = έκφραση ΤΛ_ΑΘ έκφραση | όρος. ΤΛ_ΑΘ = “+” | “-”. όρος = όρος ΤΛ_ΓΙ όρος | παράγοντας. ΤΛ_ΓΙ = “*” | “/”. παράγοντας = “(” έκφραση “)” | “αριθμός”.

23 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.23 Γραμματικές με ασάφειες V Η προηγούμενη γραμματική παραμένει δέσμια ασάφειας ως προς την προσεταιριστικότητα των πράξεων: πως γίνεται η ανάλυση της ; Η συγκεκριμένη γραμματική αφήνει ανοικτό και το ενδεχόμενο (27-5)-8 αλλά και το ενδεχόμενο 27- (5-8). Συνήθως μας ενδιαφέρει να διασφαλίζουμε αριστερή προσεταιριστικότητα και αυτό επιτυγχάνεται αν ο αντίστοιχος κανόνας της γραμματικής χαρακτηρίζεται από αριστερή και μόνο αριστερή αναδρομικότητα.

24 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.24 Γραμματικές με ασάφειες VΙ Διορθωμένη γραμματική:S = έκφραση. έκφραση = έκφραση ΤΛ_ΑΘ όρος | όρος. ΤΛ_ΑΘ = “+” | “-”. όρος = όρος ΤΛ_ΓΙ παράγοντας | παράγοντας. ΤΛ_ΓΙ = “*” | “/”. παράγοντας = “(” έκφραση “)” | “αριθμός”. Πρόταση: 27-5*8

25 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.25 Γραμματικές με ασάφειες VΙΙ Πρόταση:27-5-8

26 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.26 Γραμματικές με ασάφειες VΙΙI ΤΟ ΠΡΟΒΛΗΜΑ ΤΟΥ ΜΕΤΕΩΡΟΥ ELSE S = εντολή. εντολή = “if” έκφραση “then” εντολή | “if” έκφραση “then” εντολή “else” εντολή | άλλο. if EK1 then if EK2 then ΕΝΤ1 else ΕΝΤ2

27 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.27 Γραμματικές με ασάφειες IΧ

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

29 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.29 Αναπαράσταση παράγωγου δένδρου #define astEmptyProgram 399 #define astProgram 400 #define astEmptyDeclSeq 401 #define astDeclSeq 402 #define astDecl /* */ /* THE STRUCTURE FOR THE ABSTRACT SYNTAX TREE NODES ---- */ /* */ typedef struct AstNode_tag { int NodeType; struct symbol_tag *SymbolNode; struct AstNode_tag *pAstNode[4]; } AstNode;

30 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.30 Καθοδική Ανάλυση Ξεκινά από τη αρχή της γραμματικής (ρίζα δένδρου) για να αναπτύξει τη συμβολοσειρά, που αναλύει, αν αυτή αποτελεί πρόταση. Καμία από τις τεχνικές που θα εξετάσουμε δεν μπορεί να εφαρμοσθεί σε αριστερά αναδρομικές γραμματικές. Διακρίνουμε της τεχνικές της οπισθοδρόμησης και τις τεχνικές της πρόγνωσης.

31 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.31 Καθοδική ανάλυση με οπισθοδρόμηση Ι 1.Δοθέντος συγκεκριμένου μη τερματικού συμβόλου εφαρμόζεται ο πρώτος κανόνας της γραμματικής. 2.Στην προτασιακή μορφή, που προκύπτει επιλέγεται το πρώτο από αριστερά μη τερματικό σύμβολο και εφαρμόζεται ο πρώτος κανόνας, που αναφέρεται σε αυτό. 3.Γίνεται επαναληπτική εφαρμογή του βήματος 2, για κάθε ένα από τα μη τερματικά σύμβολα, που ακολουθούν, μέχρι τη στιγμή της παραγωγής, μιας σειράς τερματικών συμβόλων (πρόταση γλώσσας αν ταυτίζεται) ή τμήματος τερματικών συμβόλων της προτασιακής μορφής, που διαφέρει από το αντίστοιχο τμήμα της συμβολοσειράς εισόδου Η δεύτερη περίπτωση μπορεί να είναι αποτέλεσμα εσφαλμένης επιλογής κανόνα. Αναιρείται ο κανόνας που εφαρμόσθηκε τελευταίος και χρησιμοποιείται ο επόμενος που ισχύει για το ίδιο μη τερματικό σύμβολο. Αν έχουν χρησιμοποιηθεί όλοι οι κανόνες, τότε ο αλγόριθμος διατηρεί το σύμβολο ως έχει και προχωρά στην αναίρεση του κανόνα για το προηγούμενο μη τερματικό σύμβολο και οπισθοδρομεί στην κατάλληλη θέση της συμβολοσειράς εισόδου.

32 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.32 Καθοδική ανάλυση με οπισθοδρόμηση ΙΙ ΠΑΡΑΔΕΙΓΜΑ S = “k” X “n” | “k” Y. X = “l” | “m”. Y = “mmn” | “nnm”. ΠΡΟΤΑΣΗ: “kmmm”

33 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.33 Καθοδική ανάλυση με οπισθοδρόμηση ΙΙI Ιδιαίτερα πολύπλοκη Όχι αποδοτική Αρκετά γενική, δηλ. αναγνωρίζει πιο πολλές γλώσσες από τις άλλες τεχνικές καθοδικής ανάλυσης Αργεί στον εντοπισμό των λαθών και έτσι η ανάνηψη γίνεται πολύ δύσκολη

34 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.34 Ανάλυση προβλέπουσας αναδρομικής κατάβασης Ι Στην ανάλυση αναδρομικής κατάβασης ο κάθε κανόνας, που αναφέρεται σε κάποιο μη τερματικό σύμβολο, εκφράζεται από τον ορισμό μιας διαδικασίας, που θα το αναγνωρίζει. Ένας αναλυτής προβλέπουσας αναδρομικής κατάβασης αποτελείται: από μία καθολική μεταβλητή, που περιέχει την τιμή της τρέχουσας λεξικής μονάδας από μία βοηθητική διαδικασία αναγνώρισης, που ελέγχει αν η τρέχουσα λεξική μονάδα είναι η αναμενόμενη και καλεί τη διαδικασία λεξικής ανάλυσης, για την ανάγνωση της επόμενης λεξικής μονάδας και την ενημέρωση της καθολικής μεταβλητής από τις διαδικασίες ανάλυσης, που αντιστοιχούν στα μη τερματικά σύμβολα της γραμματικής από μια διαδικασία εκκίνησης, που αφού διαβάσει την πρώτη λεξική μονάδα καλεί τη διαδικασία, που αντιστοιχεί στο μη τερματικό σύμβολο της αρχής.

35 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.35 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΙΙ ΠΑΡΑΔΕΙΓΜΑ S = έκφραση. έκφραση = έκφραση “+” όρος | έκφραση “-” όρος | όρος. όρος = όρος “*” παράγοντας | όρος “/” παράγοντας | παράγοντας. παράγοντας = “(” έκφραση “)” | “αριθμός”. παράγοντας: Επέλεξε ΛΕΞ_ΜΟΝ περίπτωση “(”: αναγνώρισε (“(”); έκφραση; αναγνώρισε (“)”); περίπτωση “αριθμός”: αναγνώρισε(“αριθμός”); αλλιώς: λάθος; Τέλος παράγοντα. //αν_λεξ_μον: αναμενόμενη λεξ. μονάδα αναγνώρισε (αν_λεξ_μον): αν (ΛΕΞ_ΜΟΝ=αν_λεξ_μον) τότε διάβασε την επόμενη μονάδα και ενημέρωσε τη μεταβλητή ΛΕΞ_ΜΟΝ; αλλιώς λάθος; τέλος αν Τέλος αναγνώρισε.

36 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.36 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΙΙI Η προβλέπουσα αναδρομική κατάβαση στηρίζεται στην πρόγνωση του κατάλληλου κάθε φορά κανόνα, που οδηγεί στην παραγωγή του δένδρου της πρότασης. Δε μπορεί να εφαρμοσθεί σε αριστερά αναδρομικές γραμματικές, όπως αυτή του προηγούμενου παραδείγματος. Ας θεωρήσουμε τη μη αριστερά αναδρομική γραμματική των αριθμητικών εκφράσεων: S = έκφραση. έκφραση = όρος υπ_όροι. υπ_όροι = “+” όρος υπ_όροι | “-” όρος υπ_όροι | ε. όρος = παράγοντας υπ_παραγ. υπ_παραγ = “*” παράγοντας υπ_παραγ | “/” παράγοντας υπ_παραγ | ε. παράγοντας = “(”έκφραση “)” | “αριθμός”.

37 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.37 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΙV Για το μη τερματικό σύμβολο «έκφραση», μπορεί εναλλακτικά να έχουμε την παραγωγή, έκφραση  όρος υπ_όροι  παράγοντας υπ_παραγ υπ_όροι  (έκφραση) υπ_παραγ υπ_όροι.... ή την παραγωγή έκφραση  όρος υπ_όροι  παράγοντας υπ_παραγ υπ_όροι  αριθμός υπ_παραγ υπ_όροι.... Γενικά, για να στηριχθεί η ανάλυση στην τεχνική της πρόγνωσης χρειάζεται για κάθε μη τερματικό σύμβολο, να είναι εκ των προτέρων γνωστό τo σύνολο των τερματικών, που είναι δυνατό να εμφανισθούν στην αρχή των συμβολοσειρών, που παράγονται από αυτό (σύνολο FIRST). Επιπλέον, αν η γραμματική περιλαμβάνει κανόνες-ε, τότε για κάθε μη τερματικό σύμβολο που βρίσκεται στο αριστερό μέρος ενός τέτοιου κανόνα, επιβάλλεται και ο υπολογισμός του συνόλου των τερματικών, που μπορεί να εμφανισθούν αμέσως μετά από αυτό (σύνολο FOLLOW).

38 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.38 Ανάλυση προβλέπουσας αναδρομικής κατάβασης V Ανάλυση πρόγνωσης: κεντρική ιδέα Δοθείσης μιας παραγωγής A    , ο αναλυτής πρέπει να είναι σε θέση να επιλέξει μεταξύ  &  Σύνολα FIRST Για ένα δεξί μέρος παραγωγής  G, ορίζουμε ως FIRST(  ) το σύνολο των αναγνωριστικών που εμφανίζονται πρώτα στις συμβολοσειρές που παράγονται από το . Δηλαδή ισχύει, x  FIRST(  ) αν και μόνο αν   * x , για κάποια συμβολοσειρά  Γραμματική LL(1) Αν A   και A   εμφανίζονται στη γραμματική πρέπει F IRST (  )  F IRST (  ) =  Αυτό επιτρέπει στον αναλυτή να προγνώσει με ασφάλεια την παραγωγή που θα χρησιμοποιεί σε κάθε βήμα!

39 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.39 Ανάλυση προβλέπουσας αναδρομικής κατάβασης VΙ Δοθείσης μιας γραμματικής που έχει την ιδιότητα LL(1) μπορούμε να γράψουμε διαδικασίες που να αναγνωρίζουν το αριστερό μέρος της κάθε παραγωγής ο κώδικας της ανάλυσης είναι απλός και γρήγορος Οι γραμματικές με την ιδιότητα LL(1) ονομάζονται π ρογνώσιμες γραμματικές γιατί ο αναλυτής μ π ορεί να «π ρογνώσει » τη σωστή ανά π τυξη σε κάθε σημείο της ανάλυσης. Οι αναλυτές π ου εκμεταλλεύονται την ιδιότητα LL(1) ονομάζονται αναλυτές π ρόγνωσης. Μία π ερί π τωση ανάλυσης π ρόγνωσης είναι η ανάλυση π ροβλέ π ουσας αναδρομικής κατάβασης.

40 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.40 Ανάλυση προβλέπουσας αναδρομικής κατάβασης VΙI Παράδειγμα διορθωμένης γραμματικής αριθμητικών εκφράσεων (βλ. διαφάνεια Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΙΙΙ) int PLUS=1, MINUS=2,... int lookahead = getNextToken();//καθολική μετβλητή ΛΕΞ_ΜΟΝ void advance() { lookahead = getNextToken(); } void match(int token) { if (lookahead == token) advance(); else error(); } void S() { Expr(); } void Expr() { Term(); ExprPrime(); } void ExprPrime() { switch(lookahead) { case PLUS : match(PLUS); Term(); ExprPrime(); break; case MINUS : match(MINUS); Term(); ExprPrime(); break; default: return; } void Term() { Factor(); TermPrime(); } void TermPrime() { switch(lookahead) { case TIMES: match(TIMES); Factor(); TermPrime(); break; case DIV: match(DIV); Factor(); TermPrime(); break; default: return;} } void Factor() { switch(lookahead) { case LPAR : match(LPAR); Expr(); match(RPAR); break; case NUMBER: match(NUMBER); break; default: error();} }

41 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.41 Ανάλυση προβλέπουσας αναδρομικής κατάβασης VΙII Παράδειγμα διορθωμένης γραμματικής αριθμητικών εκφράσεων (βλ. διαφάνεια Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΙΙΙ) Για την κατασκευή παράγωγου δένδρου: Γράφουμε μέσα στις διαδικασίες κώδικα για δημιουργία κόμβου Περνάμε τους κόμβους από διαδικασία σε διαδικασία μέσω μιας στοίβας Αφαιρούμε από τη στοίβα τους κόμβους του δεξιού μέρους της παραγωγής, τους κάνουμε απογόνους του κόμβου του αριστερού μέρους και εισάγουμε τον τελευταίο στη στοίβα Για την κατασκευή συντακτικού δένδρου Κατασκευάζουμε λιγότερους κόμβους Χρειάζεται να τους βάζουμε στη στοίβα με την κατάλληλη σειρά ώστε να εξασφαλίζουμε αριστερή προσεταιριστικότητα Expr() { Term(); ExprPrime(); /* δημιουργία κόμβου Expr; εξαγωγή κόμβου ExprPrime από στοίβα; εξαγωγή κόμβου Term από στοίβα; καθιστούμε ExprPrime και Term απογόνους του Expr; εισαγωγή κόμβου Expr στη στοίβα; */ }

42 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.42 Ανάλυση προβλέπουσας αναδρομικής κατάβασης IΧ Άλλο παράδειγμα S=“if” E “then” S “else” S |“begin” S L |“print” E. L=“end” |“;” S L. E=“num” “=” “num” void S() { switch(lookahead) { case IF: match(IF); E(); match(THEN); S(); match(ELSE); S(); break; case BEGIN: matvh(BEGIN); S(); L(); break; case PRINT: match(PRINT); E(); break; default: error(); } void E() { match(NUM); match(EQ); match(NUM); } void L() { switch(lookahead) { case END: match(END); break; case SEMI: match(SEMI); S(); L(); break; default: error(); }

43 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.43 Ανάλυση προβλέπουσας αναδρομικής κατάβασης Χ Άλλο παράδειγμα (συνέχεια) πρόταση: if 2=2 then print 5=5 else print 1=1 main: κλήση S(); S 1 : εφαρμογή της παραγωγής (S, IF) : S  if E then S else S S 1 : match(IF); S 1 : κλήση E(); E 1 : εφαρμογή της παραγωγής για (E, NUM): E  num = num E 1 : match(NUM); match(EQ); match(NUM); E 1 : return για E 1 στο S 1 S 1 : match(THEN); S 1 :κλήση S(); S 2 : εφαρμογή της παραγωγής για (S, PRINT): S  print E S 2 : match(PRINT); S 2 : κλήση E(); E 2 : εφαρμογή της παραγωγής για (E, NUM): E  num = num E 2 : match(NUM); match(EQ); match(NUM); E 2 : return για E 2 στο S 2 S 2 : return για S 2 στο S 1 S 1 : match(ELSE); S 1 : κλήση S(); S 3 : εφαρμογή της παραγωγής για (S, PRINT): S  print E S 3 : match(PRINT); S 3 : κλήση E(); E 3 : εφαρμογή της παραγωγής για (E, NUM): E  num = num E 3 : match(NUM); match(EQ); match(NUM); E 3 : return για E 2 στο S 3 S 3 : return για S 3 στο S 1 S 1 : return για S 1 στο main main: match(EOF); return success;

44 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.44 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΧΙ Γενική μορφή διαδικασιών π ροβλέ π ουσας αναδρομικής κατάβασης Αν για το μη τερματικό σύμβολο Χ ορίζεται στη γραμματική ο κανόνας και αν υ π οθέσουμε ότι η είναι α π αλείψιμη, τότε Χ : Ε π έλεξε ΛΕΞ _ ΜΟΝ π ερι π τώσεις FIRST( ): διαδικασίες αναγνώρισης π ερι π τώσεις FIRST( ): διαδικασίες αναγνώρισης.... π ερι π τώσεις FIRST( )  FOLLOW(X): διαδικασίες αναγνώρισης ή των συμβόλων π ου ακολουθούν αλλιώς λάθος ; Τέλος Χ.

45 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.45 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΧΙΙ ΣΥΝΟΛΑ FIRST ΓΙΑ ΣΥΜΒΟΛΑ ΓΡΑΜΜΑΤΙΚΗΣ Για μία σειρά συμβόλων  της γραμματικής ορίζουμε FIRST(  ) ως το σύνολο των αναγνωριστικών που εμφανίζονται στην αρχή των συμβολοσειρών που παράγονται από την  Για να υπολογίσετε το FIRST(X) για ένα σύμβολο X, εφαρμόζετε τους επόμενους κανόνες μέχρι όταν δεν προστίθενται πλέον στο FIRST(X) νέα σύμβολα Αν το X είναι τερματικό, τότε FIRST(X) είναι το {X} Αν υπάρχει παραγωγή X   τότε το  περιλαμβάνεται στο FIRST(X) Αν το X είναι μη τερματικό και X  Y 1 Y 2... Y k είναι μια παραγωγή, τότε συμπεριλαμβάνουμε στο FIRST(X) κάθε στοιχείο του FIRST(Y 1 ) εκτός από το  Αν το X είναι μη τερματικό και X  Y 1 Y 2... Y k είναι μια παραγωγή, τότε συμπεριλαμβάνουμε το τερματικό a στο FIRST(X) αν το a είναι στο FIRST(Y i ) και  είναι στα FIRST(Y j ) για όλα τα 1  j  i Αν X είναι ένα μη τερματικό και X  Y 1 Y 2... Y k μια παραγωγή, τότε συμπεριλαμβάνουμε το  στο FIRST(X) αν το  είναι στα FIRST(Y i ) για όλα 1  i  k

46 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.46 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΧΙΙΙ ΣΥΝΟΛΑ FIRST ΓΙΑ ΣΕΙΡΕΣ ΣΥΜΒΟΛΩΝ ΤΗΣ ΓΡΑΜΜΑΤΙΚΗΣ Για να υπολογίσουμε το σύνολο FIRST για μία σειρά X 1 X 2... X n συμβόλων της γραμματικής (εφόσον έχουμε υπολογίσει τα σύνολα FIRST για τα X 1, Χ 2,..., X n ) εφαρμόζουμε τα ακόλουθα: Το FIRST(X 1 X 2... X n ) θα περιλαμβάνει: Όλα τα σύμβολα του FIRST(X 1 ) εκτός από το  Όλα τα σύμβολα του FIRST(X i ) εκτός από το , αν το  είναι στα FIRST(X j ) για όλα τα 1  j  i και το , αν  είναι στα FIRST(X i ) για όλα τα 1  i  n

47 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.47 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΧΙV ΠΑΡΑΔΕΙΓΜΑ ΥΠΟΛΟΓΙΣΜΟΥ ΣΥΝΟΛΩΝ FIRST S = έκφραση. έκφραση = όρος υπ_όροι. υπ_όροι = “+” όρος υπ_όροι | “-” όρος υπ_όροι | ε. όρος = παράγοντας υπ_παραγ. υπ_παραγ = “*” παράγοντας υπ_παραγ | “/” παράγοντας υπ_παραγ | ε. παράγοντας = “(”έκφραση “)” | “αριθμός”. ΣύμβολαFIRSTΣύμβολαFIRSTΣυμβ/ρέςFIRST S{“(”, “αριθμός”}παράγοντας {“(”, “αριθμός”} “+” όρος υπ_όροι {“+”} έκφραση{“(”, “αριθμός”} αριθμός{“αριθμός”} “-” όρος υπ_όροι {“-”} υπ_όροι{ , “+”, “-” } “+”{“+”} “*” παράγοντας υπ_παραγ {“*”} όρος{“(”, “αριθμός”}“-”{“-”} “/” παράγοντας υπ_παραγ {“/”} υπ_παραγ{ , “*”, “/” }“*”{“*”} “/”{“/”} “(”{“(”}

48 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.48 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΧV ΣΥΝΟΛΑ FOLLOW ΓΙΑ MH ΤΕΡΜΑΤΙΚΑ ΣΥΜΒΟΛΑ ΓΡΑΜΜΑΤΙΚΗΣ Για ένα μη τερματικό σύμβολο A ορίζουμε το FOLLOW(A) ως το σύνολο των τερματικών που μπορούν να εμφανισθούν δεξιά του A σε κάποια προτασιακή μορφή Για τον υπολογισμό των FOLLOW(A) για ένα μη τερματικό A εφαρμόζουμε τους κανόνες που ακολουθούν μέχρι όταν δεν προστίθενται πλέον νέα σύμβολα στο FOLLOW(A) Εισάγουμε το $ στο FOLLOW(S) ($ είναι το τέλος συμβολοσειράς, S είναι η αρχή της γραμματικής) Αν υπάρχει παραγωγή A   B , τότε περιλαμβάνουμε στο FOLLOW(B) όλα τα σύμβολα του FIRST(  ) εκτός του  Αν υπάρχει παραγωγή A   B, τότε περιλαμβάνουμε στο FOLLOW(B) όλα τα σύμβολα του FOLLOW(A) Αν υπάρχει παραγωγή A   B , και το  είναι στο FIRST(  ) τότε περιλαμβάνουμε στο FOLLOW(B) όλα τα σύμβολα του FOLLOW(A)

49 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.49 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΧVΙ Παραδείγματα FOLLOW (γραμματική αριθμητικών εκφράσεων)

50 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.50 Ανάλυση προβλέπουσας αναδρομικής κατάβασης ΧVΙΙ Δεν μπορούν να χρησιμοποιηθούν αριστερά αναδρομικές γραμματικές. Δεν μπορούν να χρησιμοποιηθούν γραμματικές, που δεν είναι LL(1), όπως π.χ.: σειρά_εντολών = εντολή “;” σειρά_εντολών | εντολή. εντολή = “τερματικό”.

51 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.51 Ανάλυση LL(1) I

52 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.52 Ανάλυση LL(1) II Αλγόριθμος υπολογισμού πίνακα ανάλυσης Μ Για όλες τις παραγωγές A  , εφάρμοσε τα εξής βήματα: Για κάθε τερματικό a στο FIRST(  ), θέσε A   στη θέση M[A, a] Αν το  περιλαμβάνεται στο FIRST(  ), θέσε A   στις θέσεις M[A, b] για κάθε τερματικό b του FOLLOW(A) και θέσε A   στη θέση M[A, $] αν το $ περιλαμβάνεται στο FOLLOW(A) Όλες οι υπόλοιπες θέσεις του πίνακα M εκφράζουν την αναγνώριση λάθους.

53 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.53 Ανάλυση LL(1) IIΙ ΠΑΡΑΔΕΙΓΜΑ (γραμματική αριθμητικών εκφράσεων) S = έκφραση. έκφραση = όρος υπ_όροι. υπ_όροι = “+” όρος υπ_όροι | “-” όρος υπ_όροι | ε. όρος = παράγοντας υπ_παραγ. υπ_παραγ = “*” παράγοντας υπ_παραγ | “/” παράγοντας υπ_παραγ | ε. παράγοντας = “(”έκφραση “)” | “αριθμός”.

54 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.54 Ανάλυση LL(1) IV ΠΑΡΑΔΕΙΓΜΑ (γραμματική αριθμητικών εκφράσεων - συνέχεια)

55 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.55 Ανάλυση LL(1) V Αλγόριθμος ανάλυσης LL(1) push($); // $ είναι το σύμβολο τέλους της συμβολοσειράς push(S); // S είναι η αρχή της γραμματικής lookahead = get_next_token();// διάβασε το επόμενο αναγνωριστικό repeat X = top_of_stack(); if (X είναι τερματικό ή X = = $) then if (X = = lookahead) then pop(X); lookahead = get_next_token(); else error(); else // X ένα μη τερματικό if ( M[X, lookahead] = = X  Y 1 Y 2... Y k ) then pop(X); push(Y k ); push(Y k-1 );... push(Y 1 ); else error(); until (X = $)

56 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.56 Απομάκρυνση αριστερής αναδρομικότητας Ι Διακρίνουμε την άμεση και την έμμεση αριστερή αναδρομικότητα ΠΑΡΑΔΕΙΓΜΑ ΑΜΕΣΗΣ ΑΡ. ΑΝΑΔΡΟΜΙΚΟΤΗΤΑΣ: έκφραση = έκφραση ΤΛ_ΑΘ όρος | όρος. ΠΑΡΑΔΕΙΓΜΑ ΕΜΜΕΣΗΣ ΑΡ. ΑΝΑΔΡΟΜΙΚΟΤΗΤΑΣ: ΓΕΝΙΚΗ ΜΟΡΦΗ ΑΜΕΣΗΣ ΑΡ. ΑΝΑΔΡΟΜΙΚΟΤΗΤΑΣ: μετασχηματίζεται στην ισοδύναμη μορφή

57 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.57 Απομάκρυνση αριστερής αναδρομικότητας ΙΙ ΠΑΡΑΔΕΙΓΜΑ Η S = έκφραση. έκφραση = έκφραση “+” όρος | έκφραση “-” όρος | όρος. όρος = όρος “*” παράγοντας | όρος “/” παράγοντας | παράγοντας. παράγοντας = “(” έκφραση “)” | “αριθμός”. μετασχηματίστηκε στην S = έκφραση. έκφραση = όρος υπ_όροι. υπ_όροι = “+” όρος υπ_όροι | “-” όρος υπ_όροι | ε. όρος = παράγοντας υπ_παραγ. υπ_παραγ = “*” παράγοντας υπ_παραγ | “/” παράγοντας υπ_παραγ | ε. παράγοντας = “(”έκφραση “)” | “αριθμός”.

58 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.58 Απομάκρυνση αριστερής αναδρομικότητας ΙΙΙ Αλγόριθμος απομάκρυνσης άμεσης και έμμεσης αριστερής αναδρομικότητας

59 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.59 Απομάκρυνση αριστερής αναδρομικότητας ΙV Κατά την απομάκρυνση της αριστερής αναδρομικότητας δεν αλλάζει η γλώσσα της γραμματικής. Αλλάζει η μορφή των δένδρων που παράγει η επιλεγείσα μέθοδος ανάλυσης. Σημαντικότερη συνέπεια είναι το γεγονός ότι χάνεται η επιθυμητή ιδιότητα της αριστερής προσεταιριστικότητας.

60 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.60 Αριστερή παραγοντοποίηση Ι Προηγείται οποιασδήποτε προβλέπουσας ανάλυσης, αν για το ίδιο μη τερματικό σύνολο υπάρχουν δύο ή περισσότεροι κανόνες με το ίδιο πρόθεμα στο δεξί μέρος. ΠΑΡΑΔΕΙΓΜΑΤΑ σειρά_εντολών = εντολή “;” σειρά_εντολών | εντολή. εντολή = “τερματικό”. ή εντολή_if = “if” έκφραση “then” εντολή | “if” έκφραση “then” εντολή “else” εντολή.

61 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.61 Αριστερή παραγοντοποίηση ΙΙ Γενικά, ο κανόνας μετασχηματίζεται στον

62 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.62 Ανοδική ανάλυση – Γενικά Ι Η συμβολοσειρά εισόδου σταδιακά απλοποιείται στο σύμβολο της αρχής της γραμματικής, καθώς διαβάζεται από αριστερά προς τα δεξιά παράλληλα με την εφαρμογή κανόνων για τα σύμβολα, που έχουν ήδη διαβασθεί. Η αντιστροφή της απλοποίησης που εκτελεί μία διαδικασία ανοδικής ανάλυσης είναι μία παραγωγή δεξιών προτασιακών μορφών. Το δένδρο «αναπτύσσεται» βήμα προς βήμα, από αριστερά προς τα δεξιά και από τα φύλλα προς τη ρίζα. Κάθε διαδικασία ανοδικής ανάλυσης συντονίζει την εκτέλεση ενεργειών ώθησης (στη στοίβα), απλοποίησης και αποδοχής.

63 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.63 Ανοδική ανάλυση – Γενικά ΙΙ Ενέργεια ώθησης Ωθείται η τρέχουσα λεξική μονάδα στη στοίβα και διαβάζεται η επόμενη. Δημιουργείται για το σύμβολο που ωθείται ο αντίστοιχος κόμβος με τη μορφή νέου δένδρου, στα δεξιά του δάσους που αποτελείται από δένδρα, που δημιουργήθηκαν στα προηγούμενα βήματα της ανάλυσης. Ενέργεια απλοποίησης Σε μία ενέργεια απλοποίησης με βάση ένα συγκεκριμένο κανόνα της γραμματικής, έχουμε δημιουργία ενός νέου κόμβου για το μη τερματικό σύμβολο Χ και μετατροπή των n ριζών που βρίσκονται στα δεξιά του δάσους, σε απογόνους του νέου κόμβου.

64 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.64 Ανοδική ανάλυση ώθησης – απλοποίησης Ι S = έκφραση. έκφραση = έκφραση “+” “αριθμός” | “αριθμός”.

65 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.65 Ανοδική ανάλυση ώθησης – απλοποίησης ΙΙ

66 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.66 Ανοδική ανάλυση ώθησης – απλοποίησης ΙΙΙ Το ζωτικό πρόθεμα μιας οποιασδήποτε δεξιάς προτασιακής μορφής είναι το σύνολο των συμβόλων, που περιέχονται στη στοίβα, σε κάποιο βήμα της ανάλυσης (δηλ. οι ρίζες των δένδρων που σχηματίζονται). Ένα σύνολο συμβόλων, που μπορεί να βρίσκεται στην κορυφή της στοίβας και συμβαίνει να ταιριάζει με το δεξί μέρος ενός κανόνα παραγωγής ονομάζεται λαβή απλοποίησης. ΠΑΡΑΔΕΙΓΜΑ

67 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.67 Ανοδική ανάλυση ώθησης – απλοποίησης ΙV Διαδικασίες ώθησης – απλοποίησης - ανάλυση προτεραιότητας τελεστών - ανάλυση απλής προήγησης - ανάλυση LR (η πιο σημαντική) Οι γλώσσες LR είναι προσδιοριστικές (δηλ. υπάρχει αυτόματο στοίβας που τις αναγνωρίζει με προσδιοριστικό τρόπο). Οι τεχνικές ανάλυσης LR, που χρησιμοποιούμε, δεν αναγνωρίζουν τις προτάσεις της γλώσσας με προσδιοριστικό τρόπο σε όλες τις περιπτώσεις. Πιθανά προβλήματα: Σύγκρουση ώθησης – απλοποίησης (πρόβλημα μετέωρου else). Σύγκρουση απλοποίησης – απλοποίησης.

68 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.68 Ανάλυση LR I Η οικογένεια των γραμματικών LR είναι ένα υπερσύνολο των γραμματικών, που αναλύονται με χρήση της τεχνικής LL(1). Πλεονεκτήματα: Άμεσος εντοπισμός λαθών. Η πιο γενική ανάλυση ώθησης – απλοποίησης, που μπορεί να υλοποιηθεί χωρίς οπισθοδρόμηση και να λειτουργεί το ίδιο αποδοτικά με τις υπόλοιπες τεχνικές της ίδιας κατηγορίας. Είναι ο τύπος του κώδικα ανάλυσης, που παράγεται από τις πιο διαδεδομένες γεννήτριες κώδικα. Οι τεχνικές LR διαφέρουν μεταξύ τους ανάλογα με τον τρόπο με τον οποίο γίνεται ο συντονισμός της εκτέλεσης των ενεργειών ώθησης και απλοποίησης.

69 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.69 Ανάλυση LR IΙ Για τον καθορισμό της επόμενης ενέργειας ο αναλυτής χρησιμοποιεί έναν αριθμό, που συνοδεύει τις ρίζες των δένδρων του δάσους. Ο αριθμός αυτός ονομάζεται κατάσταση και ειδικά η κατάσταση της ρίζας του δένδρου που βρίσκεται στα δεξιά του δάσους ονομάζεται τρέχουσα κατάσταση. Επιπλέον, στο αριστερό μέρος του δάσους υπάρχει η αρχική κατάσταση, που χρησιμοποιείται για τον καθορισμό της πρώτης ενέργειας του αναλυτή. Οι ενέργειες ενός αναλυτή LR εξαρτώνται από την εκάστοτε τρέχουσα κατάστασή του.

70 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.70 Ανάλυση LR IΙΙ Στην ενέργεια της ώθησης, η κατάσταση της ρίζας του νέου δένδρου καθορίζεται από την τρέχουσα κατάσταση και από το σύμβολο, που ωθείται στη στοίβα (και στο δάσος). Σε ενέργεια απλοποίησης, δημιουργείται ένας νέος κόμβος για το μη τερματικό σύμβολο στο οποίο αναφέρεται ο κανόνας και συνδέονται σ΄ αυτόν ως απόγονοι, οι n πιο δεξιές ρίζες του δάσους, που αντιστοιχούν στα σύμβολα του δεξιού μέρους του κανόνα. Τότε διαγράφονται οι καταστάσεις που συνοδεύουν τις n ρίζες. Η κατάσταση που επισυνάπτεται στη νέα ρίζα, καθορίζεται με βάση την κατάσταση της ρίζας, που βρίσκεται αμέσως πιο αριστερά και το μη τερματικό σύμβολο του νέου κόμβου. Για τον καθορισμό των ενεργειών της ανάλυσης χρησιμοποιούμε έναν πίνακα ενεργειών και έναν πίνακα μεταβάσεων.

71 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.71 Ανάλυση LR IV

72 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.72 Ανάλυση LR V

73 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.73 Ανάλυση LR VI ΠΑΡΑΔΕΙΓΜΑ (1)έκφραση = έκφραση “+” όρος. (2)έκφραση = έκφραση “-” όρος. (3)έκφραση = όρος. (4)όρος = όρος “*” παράγοντας. (5)όρος = όρος “/” παράγοντας. (6)όρος = παράγοντας. (7)παράγοντας = “(” έκφραση “)”. (8)παράγοντας = “αριθμός”.

74 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.74 Ανάλυση LR VIΙ

75 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.75 Ανάλυση LR VIΙΙ

76 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.76 Ανάλυση LR ΙΧ

77 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.77 Αναλυτής LR ώθησης - απλοποίησης Ι

78 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.78 Αναλυτής LR ώθησης - απλοποίησης ΙI push($); // $ το σύμβολο τέλους συμβολοσειράς push(s 0 ); // s 0 η αρχική κατάσταση lookahead = get_next_token(); repeat forever s = top_of_stack();// ACTION είναι ο πίνακας ενεργειών if ( ACTION[s,lookahead] = = απλοποίηση  ) then pop 2*|  | σύμβολα; //αφαιρούνται τα σύμβολα & οι καταστάσεις s = top_of_stack(); push(  ); push(GOTO[s,  ]);// GOTO είναι ο πίνακας μεταβάσεων else if ( ACTION[s,lookahead] = = ώθηση s i ) then push(lookahead); push(s i ); lookahead = get_next_token(); else if ( ACTION[s,lookahead] = = αποδοχή and lookahead = = $ ) then return (επιτυχής αναγνώριση); else error();

79 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.79 Αναλυτής LR ώθησης - απλοποίησης ΙIΙ Μια γραμματική είναι LR(k) αν, δοθείσης μιας δεξιάς παραγωγής S   0   1   2  …   n-1   n  πρόταση μπορούμε: 1. Να αναγνωρίσουμε μια λαβή απλοποίησης για κάθε δεξιά προτασιακή μορφή  i, και 2. Να καθορίσουμε τον κανόνα της απλοποίησης με την ανάγνωση της  i από αριστερά προς τα δεξιά, προχωρώντας το πολύ k σύμβολα πιο δεξιά από το τέλος της λαβής απλοποίησης της  i.

80 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.80 Αναλυτής LR ώθησης - απλοποίησης ΙV Αν μία γραμματική είναι LR(?)  υπάρχει μία και μόνο μία δεξιά παραγωγή της κάθε πρότασης Στο πάνω μέρος της στοίβας είτε υπάρχουν όλες οι ενεργές λαβές απλοποίησης που περιλαμβάνουν την κορυφή της στοίβας, είτε ωθούνται σύμβολα μέχρι να αποτελεί η κορυφή το δεξί άκρο μιας λαβής απλοποίησης Η γλώσσα των λαβών απλοποίησης είναι κανονική και άρα μπορεί να κατασκευασθεί ένα προσδιοριστικό πεπερασμένο αυτόματο που να εκτελεί αναγνώριση λαβών απλοποίησης οι πίνακες ενεργειών και μετάβασης ουσιαστικά εκφράζουν το συγκεκριμένο αυτόματο Κάθε νέα κατάσταση του αυτόματου την εισάγουμε στη στοίβα Οι τελικές καταστάσεις του αυτόματου αντιστοιχούν σε ενέργειες απλοποίησης νέα κατάσταση είναι η GOTO[αριστερό σύμβολο κανόνα, κατάσταση κορυφής]

81 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.81 Αναλυτής LR ώθησης - απλοποίησης V Πως φτιάχνουμε τους πίνακες ενεργειών & μεταβάσεων; Λεξικός αναλυτής Αναλυτής Πίνακες Ενεργειών & Μεταβάσεων Γεννήτρια αναλυτή (yacc) π ηγαίος κώδικας γραμματική Ενδιάμεση Ανα π αράσταση Στοίβα

82 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.82 Αναλυτής LR ώθησης - απλοποίησης VΙ Πως φτιάχνουμε τους πίνακες ενεργειών & μεταβάσεων (χωρίς το yacc); κατασκευάζουμε από τη γραμματική το αυτόματο αναγνώρισης λαβών απλοποίησης ορίζουμε τους πίνακες ενεργειών & μεταβάσεων αν η κατασκευή του αυτομάτου πετύχει τότε η γραμματική είναι γραμματική LR(?) αλλιώς είναι πιθανό να προκύψουν συγκρούσεις ώθησης – απλοποίησης ή συγκρούσεις απλοποίησης – απλοποίησης τότε ή θα πρέπει να εφαρμοσθεί μία άλλη κατασκευή LR(?) ή να κατασκευάσουμε τον αναλυτή έτσι ώστε σε μία περίπτωση σύγκρουσης να επιλέγει κάθε φορά μία συγκεκριμένη ενέργεια οι αναλυτές του byacc όταν έχουμε σύγκρουση ώθησης – απλοποίησης εκτελούν κάθε φορά την ώθηση

83 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.83 Αναλυτής LR ώθησης - απλοποίησης VΙΙ Πως φτιάχνουμε το αυτόματο αναγνώρισης λαβών απλοποίησης (χωρίς το yacc); χρησιμοποιούμε στοιχεία LR(k) για να κωδικοποιήσουμε το σύνολο των κανόνων που μπορεί το δεξί τους μέρος να αποτελέσει λαβή απλοποίησης σε μία δεδομένη κατάσταση υπολογίζουμε για κάθε κατάσταση τα goto( s,  ) και closure( s ), δηλαδή το κλείσιμο (βλ. συνέχεια) καταγράφουμε τις καταστάσεις και τις μεταβάσεις του αυτόματου συμπληρώνουμε τους πίνακες ενεργειών & μεταβάσεων

84 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.84 Αναλυτής LR ώθησης - απλοποίησης VΙΙΙ Στοιχείο LR(k) είναι ένα ζεύγος [A, B], όπου A είναι μία παραγωγή  με μία κάπου στο δεξί μέρος B σύμβολα εισόδου με μήκος ≤ k (τερματικά ή $) Παραδείγματα: [  , a] Η δείχνει την τρέχουσα θέση που μπορούμε να θεωρήσουμε ότι αναπαριστά η κορυφή της στοίβας στοιχεία LR(0) [   ] (δεν υπάρχουν σύμβολα εισόδου) στοιχεία LR(1) [  , a ] (ένα μόνο σύμβολο εισόδου) στοιχεία LR(2) [  , a b ] (δύο σύμβολα εισόδου)...

85 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.85 Πίνακες ανάλυσης LR(1) I Η παραγωγή   , με σύμβολο εισόδου a, παράγει 4 στοιχεία LR(1) [   , a], [  , a], [    , a], & [   , a] Το σύνολο των LR(1) στοιχείων μιας γραμματικής είναι πεπερασμένο. Ποια είναι η σημασία των συμβόλων εισόδου στα στοιχεία; τα καταγράφουμε έτσι ώστε να οδηγούμαστε στη σωστή απλοποίηση αν η βρίσκεται σε ενδιάμεση θέση σε ένα μόνο στοιχείο δεν παίζει κάποιο ιδιαίτερο ρόλο π.χ. στο [    , a], το σύμβολο εισόδου δεν έχει ιδιαίτερη σημασία στο [   , a], το σύμβολο a οδηγεί στην απλοποίηση    στο σύνολο { [   , a],[    , b] } συμβόλο εισόδου = a  απλοποίηση σε  ; σύμβολο εισόδου  F IRST (  )  ώθηση  σε μία LR(1) γραμματική ένα σύμβολο εισόδου είναι αρκετό για να καθορίσει την επόμενη ενέργεια

86 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.86 Πίνακες ανάλυσης LR(1) II  Οι καταστάσεις του προσδιοριστικού αυτόματου αναγνώρισης λαβών απλοποίησης ορίζονται ως σύνολα στοιχείων, I 0, I 1,..., I n a.Εισάγουμε ένα νέο σύμβολο S’ και μία παραγωγή S’  Sόπου S η αρχή της γραμματικής b.Η αρχική κατάσταση, I 0 περιλαμβάνει τα στοιχεία [S’  S, $] και όλα τα ισοδύναμα που δίνονται ως closure( I 0 ) c.Για κάθε σύνολο I k και κάθε σύμβολο , βρίσκουμε το goto(I k,  ) αν το σύνολο της goto(I k,  ) δεν έχει ήδη δημιουργηθεί τότε το δημιουργούμε καταγράφουμε όλες τις μεταβάσεις goto( ) 2 Συμπληρώνουμε τους πίνακες ενεργειών και μεταβάσεων της ανάλυσης

87 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.87 Πίνακες ανάλυσης LR(1) IIΙ ΥΠΟΛΟΓΙΣΜΟΣ closure(I) Το closure(I) προσθέτει στο σύνολο I όλα τα στοιχεία που προκύπτουν από τα ήδη υπάρχοντα στο I κάθε στοιχείο [   , a] δημιουργεί επίσης όλα τα [    , x] για κάθε παραγωγή με  στα αριστερά και για όλα τα x  F IRST (  a) εφόσον συμπεριληφθούν όλα τα στοιχεία της παραγωγής  περιλαμβάνονται και όσα προκύπτουν από αυτά εφαρμόζοντας την ίδια πράξη Closure( I ) while ( το σύνολο I μεγαλώνει ) for κάθε [    , a]  I for κάθε παραγωγή     P for κάθε τερματικό b  FIRST(  a) if [   , b]  I then προσέθεσε το [   , b] στο I

88 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.88 Πίνακες ανάλυσης LR(1) IV ΥΠΟΛΟΓΙΣΜΟΣ goto(I,x) Υπολογίζει τη νέα κατάσταση που ο αναλυτής προσεγγίζει αν αυτός βρίσκεται στην κατάσταση I και αναγνωρίζει το τερματικό x goto( { [     , a] },  ) παράγει κατάσταση που περιλαμβάνει το [     , a] αν δεν υπάρχει δημιουργείται και περιλαμβάνεται σε αυτή και το closure( [     , a] ) Goto( I, x ) new = Ø for κάθε [    x , a]  I new = new  [    x , a] return closure(new)

89 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.89 Πίνακες ανάλυσης LR(1) V ΑΛΓΟΡΙΘΜΟΣ ΚΑΤΑΣΚΕΥΗΣ ΑΥΤΌΜΑΤΟΥ Ξεκινάμε από το I 0 = closure( [S’  S, $] ) Δημιουργούμε συνέχεια νέες καταστάσεις μέχρι τη στιγμή που δεν θα μπορεί να δημιουργηθούν άλλες I 0 = closure( [ S’  S, $] ) C = { I 0 } while ( προστίθενται στο C νέα σύνολα στοιχείων ) for κάθε I i  C και κάθε x  ( T  NT ) I new = goto( I i, x ) if I new  C then C = C  I new κατέγραψε τη μετάβαση I i  I new με αναγνώριση του x

90 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.90 Πίνακες ανάλυσης LR(1) VΙ ΑΛΓΟΡΙΘΜΟΙ ΚΑΤΑΣΚΕΥΗΣ ΠΙΝΑΚΩΝ LR(1) Closure( I ) while ( το σύνολο I μεγαλώνει ) for κάθε [    , a]  I for κάθε παραγωγή     P for κάθε τερματικό b  FIRST(  a) if [   , b]  I then προσέθεσε το [   , b] στο I Goto( I, x ) new = Ø for κάθε [    x , a]  I new = new  [    x , a] return closure(new) I 0 = closure( [ S’  S, $] ) C = { I 0 } while ( προστίθενται στο C νέα σύνολα στοιχείων ) for κάθε I i  C και κάθε x  ( T  NT ) I new = goto( I i, x ) if I new  C then C = C  I new κατέγραψε τη μετάβαση I i  I new με αναγνώριση του x

91 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.91 Παράδειγμα ανάλυσης LR(1) Ι S  έκφραση έκφραση  όρος - έκφραση έκφραση  όρος όρος  π αράγοντας * όρος όρος  π αράγοντας π αράγοντας  id Σύμβολο FIRST S{ id } έκφραση { id} όρος { id } παράγοντας { id} -{ - } *{ * } id{ id}

92 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.92 Παράδειγμα ανάλυσης LR(1) ΙΙ

93 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.93 Παράδειγμα ανάλυσης LR(1) ΙΙΙ ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΩΝ for κάθε σύνολο στοιχείων I x  C for κάθε στοιχείο  I x if στοιχείο είναι [  a ,b] και a  T και goto(I x,a) = I k, then ACTION[x,a]  “ ώθηση k” else if στοιχείο είναι [S’  S,$] then ACTION[x,$]  “ α π οδοχή ” else if στοιχείο είναι [ ,a] then ACTION[x,a]  “ α π λο π οίηση  ” for κάθε n  NT if goto(I x,n) == I k then GOTO[x,n]  k

94 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.94 Παράδειγμα ανάλυσης LR(1) ΙV

95 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.95 Συγκρούσεις ενεργειών Τι γίνεται αν η κατάσταση s περιέχει [    a , b] και [   , a] ; Το πρώτο στοιχείο παράγει “ώθηση” και το δεύτερο “απλοποίηση” Δεν μπορούμε στο ACTION[s,a] να συμπληρώσουμε δύο ενέργειες Σύγκρουση ώθησης – απλοποίησης (shift – reduce conflict) Μπορούμε ή να αλλάξουμε τη γραμματική ή αυθαίρετα να επιλέξουμε την εκτέλεση ώθησης, κάτι που έχει αποδειχθεί ότι συνήθως αποδίδει τη σωστή σημασία (π.χ. Πρόβλημα μετέωρου else) ή να επιλέξουμε κάποια άλλη ανάλυση LR Τι γίνεται όταν η κατάσταση s περιέχει [   , a] και [   , a] ; Κάθε στοιχείο παράγει “απλοποίηση”, αλλά με διαφορετικό κανόνα Δεν μπορούμε στο ACTION[s,a] να συμπληρώσουμε δύο ενέργειες Σύγκρουση απλοποίησης – απλοποίησης (reduce – reduce conflict) Ένδειξη λάθους στη γραμματική και στις δύο περιπτώσεις λέμε ότι η γραμματική δεν είναι LR(1)

96 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.96 Παραλλαγές ανάλυσης LR: LR(0) Βασικά είναι οι ίδιοι αλγόριθμοι όπως και για την ανάλυση LR(1) Η μόνη διαφορά είναι ότι στα στοιχεία LR(0) δεν υπάρχει σύμβολο εισόδου και γι΄ αυτό δεν παράγονται πολλά στοιχεία σε κάθε σύνολο Η ανάλυση LR(0) παράγει λιγότερες καταστάσεις Δεν μπορεί να αναγνωρίσει όλες τις γραμματικές που αναγνωρίζει η LR(1) Είναι πιο πιθανό να οδηγήσει σε συγκρούσεις ανάλυσης κλείσιμο συνόλου στοιχείων LR(0): μεταβάσεις συνόλων στοιχείων LR(0): κατασκευή συνόλων στοιχείων LR(0): Closure( I ) while ( το σύνολο I μεγαλώνει ) for κάθε στοιχείο [     ]  I for κάθε παραγωγή     P if [    ]  I then προσέθεσε το [    ] στο I Goto( I, x ) new = Ø for κάθε [    x  ]  I new = new  [    x  ] return closure(new) I 0 = closure( [ S’  S ] ) C = { I 0 } while ( προστίθενται στο C νέα σύνολα στοιχείων) for κάθε I i  C και κάθε x  ( T  NT ) I new = goto( I i, x ) if I new  C then C = C  I new κατέγραψε τη μετάβαση I i  I new με αναγνώριση του x

97 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.97 Παραλλαγές ανάλυσης LR: SLR(1) Ο αλγόριθμος SLR(1) για να καθορίσει πότε θα γίνει απλοποίηση χρησιμοποιεί και τα σύνολα FOLLOW Οι αναλυτές SLR(1) έχουν λιγότερες καταστάσεις από ότι οι LR(1) for κάθε σύνολο στοιχείων I x  C for κάθε στοιχείο  I x if στοιχείο είναι [  a  ] και a  T και goto(I x,a) = I k, then ACTION[x,a]  “ ώθηση k” else if στοιχείο είναι [S’  S ] then ACTION[x,\0]  “ α π οδοχή ” else if στοιχείο είναι [  ] then for κάθε a  FOLLOW(  ) then ACTION[x,a]  “ α π λο π οίηση  ” for each n  NT if goto(I x,n) = I k then GOTO[x,n]  k

98 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.98 Παραλλαγές ανάλυσης LR: LALR(1) Βασική ιδέα: συνένωση καταστάσεων LR(1) κρατάμε τον πυρήνα LR(0) των στοιχείων LR(1) (αγνοούμε τα σύμβολα εισόδου) αν δύο σύνολα LR(1) έχουν τον ίδιο πυρήνα, τότε τα συνενώνουμε και ενημερώνουμε τους πίνακες ACTION και GOTO Οι αναλυτές LALR(1) μπορούν να φτιαχτούν με δύο τρόπους 1. Κατασκευή των συνόλων στοιχείων LR(1) και συνένωση 2. Αγνοούμε τα στοιχεία με τελεία στην αρχή του δεξιού μέρους και κατασκευάζουμε πυρήνες συνόλων στοιχείων LR(0). Στη συνέχεια χρησιμοποιούμε έναν αλγόριθμο προώθησης συμβόλων εισόδου για να υπολογίσουμε τα σύμβολα εισόδου. Η δεύτερη προσέγγιση είναι πιο αποδοτική επειδή αποφεύγει τη δημιουργία μεγάλων ενδιάμεσων LR(1) πινάκων

99 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.99 Παραλλαγές ανάλυσης LR: LALR(1) Ένας αναλυτής LALR(1) για μια γραμματική G έχει τον ίδιο αριθμό καταστάσεων με τον αντίστοιχο αναλυτή SLR(1) Αν ένας αναλυτής LR(1) για μια γραμματική G δεν παρουσιάζει συγκρούσεις ώθησης - απλοποίησης, τότε δεν θα έχει συγκρούσεις ώθησης – απλοποίησης και ο αναλυτής LALR(1) Ένας αναλυτής LALR(1) μπορεί να εμφανίζει σύγκρουση απλοποίησης - απλοποίησης χωρίς αυτό να συμβαίνει και στον αντίστοιχο LR(1) Οι αναλυτές LALR(1) είναι πιο γενικοί από τους SLR(1) και συγχρόνως έχουν το ίδιο μικρό χώρο καταστάσεων Ανάλυση LALR(1) παράγουν οι γεννήτριες yacc και byacc

100 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.100 Γλώσσες χωρίς συμφραζόμενα Ι Γλώσσες χωρίς συμφραζόμενα Προσδιοριστικές γλώσσες (LR(k)) Γλώσσες LL(k) Γλώσσες α π λής π ροήγησης Γλώσσες LL(1) Γλώσσες π ροτεραιότητας τελεστών LR(k)  LR(1) Η ιεραρχία γλωσσών χωρίς συμφραζόμενα

101 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.101 Γλώσσες χωρίς συμφραζόμενα ΙΙ Ιεραρχία γλωσσών χωρίς συμφραζόμενα Οι γλώσσες π ροτεραιότητας τελεστών π εριλαμβάνουν και κά π οιες γλώσσες με ασάφειες LL(1) είναι υ π οσύνολο των γραμματικών SLR(1) Γλώσσες χωρίς συμφραζόμενα Γλώσσες χωρίς ασάφειες Προτεραιότητας τελεστών LR(k) LR(1) LALR(1) SLR(1) LR(0) LL(k) LL(1)

102 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.102 Ανάνηψη λαθών Ι Εντοπισμός λάθους όσο το δυνατόν πιο έγκαιρα. Επιλογή θέσης από όπου θα συνεχίζεται η ανάλυση. Να εντοπίζονται μόνο υπαρκτά λάθη και να μην εμφανίζονται διαδιδόμενα πλασματικά λάθη. Να αποφεύγεται η μετάπτωση του αναλυτή σε ατέρμονες βρόχους. Τεχνικές ανάνηψης λαθών: - ανάνηψη «πανικού» - ανάνηψη σε επίπεδο φράσης - κανόνες παραγωγής για λάθη - συνολική διόρθωση

103 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.103 Ανάνηψη λαθών ΙΙ Η ανάνηψη «πανικού» στην προβλέπουσα αναδρομική κατάβαση υλοποιείται με τον καθορισμό μονάδων συγχρονισμού. Όταν ο αναλυτής βρει λάθος, τότε προσπερνά τις επόμενες μονάδες μέχρι να εντοπίσει μια μονάδα συγχρονισμού από την οποία μπορεί να συνεχίσει την ανάλυσης. Κάθε μη τερματικό σύμβολο έχει τις δικές του μονάδες συγχρονισμού. Οι μονάδες συγχρονισμού επιλέγονται μέσα από τα σύνολα FOLLOW. Στην ανάλυση LL(1) έχουμε εντοπισμό λάθους, όταν στην κορυφή της στοίβας βρίσκεται ένα μη τερματικό σύμβολο X, τέτοιο ώστε το τρέχον σύμβολο εισόδου να μην περιλαμβάνεται στο σύνολο FIRST(X) και αν αυτό συμβαίνει να περιέχει το ε, ούτε στο σύνολο FOLLOW(X).

104 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.104 Ανάνηψη «πανικού» στην ανάλυση LL(1) I Η ανάνηψη «πανικού» μπορεί εύκολα να υλοποιηθεί με τον προσδιορισμό της κατάλληλης ενέργειας, για κάθε περίπτωση κενής θέσης, στον πίνακα ανάλυσης. Διακρίνουμε τρεις πιθανές ενέργειες ανάνηψης: την αφαίρεση του συμβόλου Χ από τη στοίβα (pop), το προσπέρασμα ενός αριθμού συμβόλων εισόδου, μέχρι τον εντοπισμό μονάδας, που μπορεί να χρησιμοποιηθεί για την επανεκκίνηση της διαδικασίας ανάλυσης (scan) και την ώθηση στη στοίβα ενός νέου μη τερματικού συμβόλου.

105 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.105 Ανάνηψη «πανικού» στην ανάλυση LL(1) II Η pop εκτελείται, όταν η τρέχουσα λεξική μονάδα είναι η $ ή όταν αυτή ανήκει στο FOLLOW(X). Η scan εκτελείται, όταν η τρέχουσα λεξική μονάδα δεν είναι η $ και δεν ανήκει στο. Η push επιστρατεύεται, όταν συμβεί να έχει αδειάσει η στοίβα, ενώ δεν έχει ολοκληρωθεί ακόμη η ανάγνωση όλων των μονάδων της συμβολοσειράς εισόδου. Τότε ωθείται στη στοίβα το σύμβολο της αρχής της γραμματικής και αγνοούνται ένα προς ένα όλα τα επόμενα σύμβολα εισόδου, μέχρι την ανάγνωση συμβόλου, που ανήκει στο σύνολο FIRST της αρχής.

106 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.106 Ανάνηψη «πανικού» στην ανάλυση LL(1) III ΠΑΡΑΔΕΙΓΜΑ (ανάνηψη λαθών στη γραμματική αριθμητικών εκφράσεων) S = έκφραση. έκφραση = όρος υπ_όροι. υπ_όροι = “+” όρος υπ_όροι | “-” όρος υπ_όροι | ε. όρος = παράγοντας υπ_παραγ. υπ_παραγ = “*” παράγοντας υπ_παραγ | “/” παράγοντας υπ_παραγ | ε. παράγοντας = “(”έκφραση “)” | “αριθμός”.

107 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.107 Ανάνηψη «πανικού» στην ανάλυση LL(1) IV ΠΙΝΑΚΑΣ ΑΝΑΛΥΣΗΣ ΧΩΡΙΣ ΑΝΑΝΗΨΗ ΛΑΘΩΝ: ΠΙΝΑΚΑΣ ΑΝΑΛΥΣΗΣ ΜΕ ΑΝΑΝΗΨΗ ΛΑΘΩΝ:

108 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.108 Ανάνηψη «πανικού» στην ανάλυση LL(1) V

109 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.109 Εντοπισμός λάθους στην ανάλυση LR I (1)έκφραση = έκφραση “+” όρος. (2)έκφραση = έκφραση “-” όρος. (3)έκφραση = όρος. (4)όρος = όρος “*” παράγοντας. (5)όρος = όρος “/” παράγοντας. (6)όρος = παράγοντας. (7)παράγοντας = “(” έκφραση “)”. (8)παράγοντας = “αριθμός”.

110 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.110 Εντοπισμός λάθους στην ανάλυση LR II

111 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.111 Εντοπισμός λάθους στην ανάλυση LR III

112 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.112 Εντοπισμός λάθους στην ανάλυση LR IV Αναγνώριση λάθους γίνεται όταν ο αλγόριθμος περιέλθει σε κατάσταση, που στον πίνακα ενεργειών δεν αντιστοιχεί συγκεκριμένη ενέργεια για το τερματικό εισόδου, που ακολουθεί. Το διαγνωστικό μήνυμα λάθους που πρέπει να τυπωθεί μπορεί να επιλεγεί αν εξετάσουμε τα περιεχόμενα της στοίβας.

113 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.113 Εντοπισμός λάθους στην ανάλυση LR V Ανάνηψη «πανικού»: Καθορίζεται ένα σύνολο μονάδων συγχρονισμού που συνήθως αποτελείται από διαχωριστές που δηλώνουν τέλος εντολών ή άλλων δομημένων στοιχείων της γλώσσας Όταν εντοπίζεται λάθος, τότε συνεχίζεται η ανάγνωση των λεξικών μονάδων εισόδου, μέχρι τον εντοπισμό κάποιας μονάδας συγχρονισμού. Ακολουθεί η σταδιακή αφαίρεση συμβόλων από τη στοίβα μέχρι αυτή να περιέλθει σε κατάσταση από την οποία ορίζεται συγκεκριμένη ενέργεια για το σύμβολο συγχρονισμού που εντοπίστηκε. Μετά την εκτέλεση της ενέργειας αυτής ο έλεγχος επανέρχεται στον αναλυτή για τη συνέχιση της διαδικασίας.

114 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.114 Εντοπισμός λάθους στην ανάλυση LR VΙ Ανάνηψη σε επίπεδο φράσης: Πρέπει όχι απλά να εντοπισθεί το λάθος, αλλά να γίνει και αναγνώριση του λάθους που εντοπίσθηκε. Η ανάνηψη αποβλέπει είτε στην τροποποίηση της κορυφής της στοίβας, είτε στην τροποποίηση των συμβόλων εισόδου που προηγούνται, για την απρόσκοπτη συνέχιση της ανάλυσης. Μία προσέγγιση αυτού του τύπου χαρακτηρίζεται από το ρίσκο να περιέλθει η ανάλυση σε ατέρμονα βρόχο. Συνιστώνται τεχνικές: που εγγυώνται την αφαίρεση από τη συμβολοσειρά εισόδου ή την ώθηση στη στοίβα τουλάχιστο μιας λεξικής μονάδας εγγυώνται το άδειασμα της στοίβας με την ολοκλήρωση της ανάγνωσης της συμβολοσειράς δεν αφαιρούν από τη στοίβα μη τερματικά σύμβολα και τις αντίστοιχες καταστάσεις, που έχουν ήδη αναγνωρισθεί

115 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.115 Εντοπισμός λάθους στην ανάλυση LR VΙΙ Ανάνηψη λαθών σε αναλυτές του byacc: Τροποποιούμε τη γραμματική προσθέτοντας κανόνες παραγωγής για λάθη, της μορφής: μη τερματικό: error μονάδες_συγχρονισμού όπου error η ψευδομονάδα λάθους του byacc. Μετά τον εντοπισμό λάθους (κενή θέση στον πίνακα ενεργειών) το byacc αφαιρεί από τη στοίβα όσα σύμβολα χρειάζεται, ώστε αυτή να περιέλθει σε κατάσταση, που περιέχει ένα τουλάχιστο στοιχείο προερχόμενο από κανόνα λάθους, με την τελεία τοποθετημένη στα αριστερά της ψευδομονάδας error. Στη συνέχεια ο αναλυτής ωθεί στη στοίβα τη μονάδα error, ως αν αυτή ήταν μια τυπική περίπτωση συμβόλου εισόδου. Αν στον κανόνα λάθους δεν έχει δηλωθεί κάποια μονάδα συγχρονισμού, τότε ο αναλυτής προχωράει άμεσα σε απλοποίηση σύμφωνα με αυτόν και εκτελεί τις ενέργειες που το συνοδεύουν. Η διαδικασία συνεχίζει αγνοώντας ένα ή περισσότερα σύμβολα εισόδου, μέχρι τον εντοπισμό εκείνου, για το οποίο ο πίνακας ενεργειών ορίζει τν επόμενη ενέργεια της ανάλυσης.

116 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.116 Εντοπισμός λάθους στην ανάλυση LR VΙΙΙ (1)έκφραση = έκφραση “+” όρος. (2)έκφραση = έκφραση “-” όρος. (3)έκφραση = όρος. (4)όρος = όρος “*” παράγοντας. (5)όρος = όρος “/” παράγοντας. (6)όρος = παράγοντας. (7)παράγοντας = “(” έκφραση “)”. (8)παράγοντας = “αριθμός”. ΠΑΡΑΔΕΙΓΜΑ: ΓΡΑΜΜΑΤΙΚΗ ΑΡΙΘΜΗΤΙΚΩΝ ΕΚΦΡΑΣΕΩΝ Γράφουμε τον τελευταίο κανόνα της γραμματική μέσα στο byacc ως εξής: paragontas: ARITHMOS{$$=$1;} | ‘(’ ekfrasi ‘)’{$$=$2;} |error{$$=0;} ;

117 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.117 Εντοπισμός λάθους στην ανάλυση LR IX ΠΑΡΑΔΕΙΓΜΑ: ΓΡΑΜΜΑΤΙΚΗ ΑΡΙΘΜΗΤΙΚΩΝ ΕΚΦΡΑΣΕΩΝ (συνέχεια) σημείωση: στην παραπάνω ανάλυση οι πίνακες της ανάλυσης είναι οι LALR(1) πίνακες που παράγει το byacc και όχι αυτοί που χρησιμοποιήσαμε σε προηγούμενα παραδείγματα

118 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.118 Εντοπισμός λάθους στην ανάλυση LR X σημαντική λεπτομέρεια: Μετά την εκτέλεση απλοποίησης σύμφωνα με κανόνα λάθους ο αναλυτής δεν εντοπίζει άλλο λάθος (αγνοεί τη ψευδομονάδα error) αν προηγουμένως δεν έχει εκτελέσει τρεις διαδοχικές ενέργειες ώθησης σε κανονική λειτουργία. Αυτό γίνεται για να αποφεύγεται ο εντοπισμός διαδιδόμενων (πλασματικών) λαθών και λέμε ότι τότε ο αναλυτής συνεχίζει τη λειτουργία του σε κατάσταση λάθους. Πρέπει η διαχείριση λαθών να γίνεται με τέτοιο τρόπο ώστε η επαναφορά του μεταγλωττιστή σε κανονική λειτουργία να γίνεται μετά από ανάγνωση ενός εύλογου αριθμού συμβόλων και όχι αφού έχει διαβασθεί ένα μεγάλο μέρος του προγράμματος χωρίς ουσιαστικά ο αναλυτής να έχει τη δυνατότητα εντοπισμού λαθών. Όταν δεν υπάρχει κίνδυνος εντοπισμού διαδιδόμενων λαθών μπορείτε να χρησιμοποιείτε το macro yyerrok, που επαναφέρει τον αναλυτή σε κανονική λειτουργία χωρίς να έχει προηγηθεί η εκτέλεση τριών ενεργειών ώθησης.

119 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.119 Εντοπισμός λάθους στην ανάλυση LR XΙ ΠΡΟΣΟΧΗ: Αν στο προηγούμενο παράδειγμα γράφαμ paragontas: ARITHMOS{$$=$1;} | ‘(’ ekfrasi ‘)’{$$=$2;} |error { yyerrok; $$=0; } ; τότε η ανάλυση της συμβολοσειράς 27 8 οδηγείται σε έναν ατέρμονα βρόχο εκτύπωσης του μηνύματος syntax error

120 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.120 Εντοπισμός λάθους στην ανάλυση LR X περίπτωση που η χρήση του yyerrok είναι επωφελής: while_statement: WHILE expr DO statement DONE { $$=exec_do_while($2,$4); } | error DONE { yyerror(“Bad WHILE syntax”); yyerrok; $$=NULL; } ; άλλη δυνατότητα: να αγνοηθεί το σύμβολο εισόδου, που προκαλεί τον εντοπισμό λάθους και να συνεχισθεί η ανάλυση με το σύμβολο που ακλουθεί. Για να γίνει αυτό χρησιμοποιείτε το macro yyclearin

121 ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής, Α.Π.Θ.121 Εντοπισμός λάθους στην ανάλυση LR XI Στο παράδειγμα της προηγούμενης διαφάνειας ο κανόνας λάθους συνοδεύεται από μονάδα συγχρονισμού. Πως αντιδρά ο αναλυτής σε μία τέτοια περίπτωση; Το byacc αγνοεί όσα σύμβολα εισόδου χρειάζεται, μέχρι τον εντοπισμό κάποιου που είτε είναι μία από τις μονάδες συγχρονισμού, είτε μπορεί δυνητικά να απλοποιηθεί σε κάποιο απ΄ αυτά (αν αυτό είναι μη τερματικό). Τότε το συγκεκριμένο σύμβολο ωθείται στη στοίβα, οπότε η ανάλυση μπορεί (σε ένα ή περισσότερα βήματα) να εκτελέσει απλοποίηση σύμφωνα με τον κανόνα του λάθους και να συνεχίσει την πορεία της.


Κατέβασμα ppt "ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,"

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google