1 / 17

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

Συντακτική Ανάλυση. Βασικοί ορισμοί Γραμματικές Χωρίς Συμφραζόμενα (Context-Free Grammars ή CFGs) Παραγωγές (derivations) Συντακτικά δένδρα ( parse trees) Συντακτική ανάλυση από πάνω-προς-τα-κάτω (top-down) Συντακτική ανάλυση από κάτω -προς-τα-πάνω (bottom-up) Διφορούμενες γραμματικές.

jewell
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Συντακτική Ανάλυση • Βασικοί ορισμοί • Γραμματικές Χωρίς Συμφραζόμενα (Context-Free Grammars ή CFGs) • Παραγωγές (derivations) • Συντακτικά δένδρα (parse trees) • Συντακτική ανάλυση από πάνω-προς-τα-κάτω (top-down) • Συντακτική ανάλυση από κάτω-προς-τα-πάνω (bottom-up) • Διφορούμενες γραμματικές ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  2. sentence “I gave him the book” indirect object subject: I verb:gave object: him noun phrase noun: book article: the Συντακτική Ανάλυση, Ορισμός • Συντακτική ανάλυση (parsing): η διαδικασία με την οποία προσδιορίζουμε αν η συμβολοσειρά εισόδου ακολουθεί τους κανόνες σύνταξης της γλώσσας, καθώς και τη λειτουργία κάθε λεκτικής μονάδας. ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  3. Συντακτική Ανάλυση Προγράμματος { if (b == (0)) a = b; while (a != 1) printf(“%I “,I--); } Source code (character stream) Lexical Analysis { if ( b == 0 ) a = b ; Token stream Syntax Analysis block Syntax tree while_stmt if_stmt expr expr block != constant == constant variable variable ... 1 expr 0 b a = variable variable a b ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  4. Λειτουργία της Συντακτικής Ανάλυσης • Είσοδος ΣΑ : ροή λεκτικών μονάδων (token stream) • Έξοδος ΣΑ : συντακτικό δένδρο που προσδιορίζει τις σχέσεις ανάμεσα στις ΛΜ και/ή ένδειξη ορθότητας του προγράμματος • Η συντακτική ανάλυση δεν ελέγχει πολλές παραμέτρους όπως π.χ. την συμφωνία ορισμάτων-τελεστών, την αρχικοποίηση των μεταβλητών κ.α. int x = true; int y; z = f(y); • Τα παραπάνω παραπέμπονται στη σημασιολογική ανάλυση ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  5. Προσδιορισμός του συντακτικού με ΚΕ • Οι κανονικές εκφράσεις είναι εύκολες να κατανοηθούν και να υλοποιηθούν με ΝΠΑ. Δυστυχώς δεν μπορούν να εκφράσουν το συντακτικό των γλωσσών προγραμματισμού. Π.χ. Η γλώσσα που περιέχει όλες τις συμβολοσειρές με ισορροπημένες (balanced) παρενθέσεις: () (()) ()()() (())()((()())) Καθώς οι ΚΕ ισοδυναμούν με ΝΠΑ, θα έπρεπε να κατασκευάσουμε αυτόματο με άπειρες καταστάσεις για να αναγνωρίσουμε όλες τις συμβολοσειρές της γλώσσας. Π.χ. για μέχρι πέντε φωλιασμένες παρενθέσεις απαιτείται: ( ( ( ( ( S ) ) ) ) ) ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  6. Γραμματικές • Μοντέλο παραγωγής (αντί αναγνώρισης) των συμβολοσειρών που ανήκουν σε μία γλώσσα. • Οι γραμματικές ορίζουν το συντακτικό και όχι τη σημασιολογία της γλώσσας. • Γενικά, οι γραμματικές δίνονται σαν ένα σύνολο κανόνων “παραγωγής”, π.χ. stmt if expr then stmt else stmt expr  expr + expr | expr * expr Οι κανόνες περιέχουν τερματικά (δηλ. τις λεκτικές μονάδες της γλώσσας) και μη τερματικά σύμβολα (terminals & non-terminals). ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  7. Γραμματικές : ορισμός • Ως γραμματική G ορίζεται η τετράδα: G = { VN, VT, P, S}, όπου VN :αλφάβητο συμβόλων που ονομάζονται μη τερματικά VT : αλφάβητο συμβόλων που ονομάζονται τερματικά P : σύνολο συντακτικών κανόνων ή κανόνων παραγωγής της μορφής α β όπου αV+και β V*όπου V = VNVT . S: το αρχικό σύμβολο της γραμματικής VN Ισχύει ότι VNVT =  ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  8. Επεξήγηση • Τερματικά σύμβολα: βασικές δομικές μονάδες από τις οποίες κατασκευάζουμε μία γλώσσα. • Μη-τερματικά σύμβολα : αναπαριστούν ομάδες συμβόλων • Κανόνες παραγωγής : καθορίζουν το πώς συνδυάζονται τα τερματικά και μη σύμβολα της γραμματικής για την κατασκευή της γλώσσας • Αρχικό σύμβολο : σημείο εκκίνησης για την κατασκευή των συμβολοσειρών της γλώσσας. ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  9. Είδη γραμματικών • Ανάλογα με την μορφή των κανόνων παραγωγής οι γραμματικές διακρίνονται σε τέσσερις τύπους. Οι σημαντικότερες από αυτές είναι: • Τύπου 2 ή Γραμματικές χωρίς συμφραζόμενα (Context Free Grammars ή CFG): Α = x όπου Α VN και x V*. • Τύπου 3 ή Κανονικές Γραμματικές (Regular Grammars): Α = α | α, Β όπου Α, Β VN και a VT. • Οι κανονικές γραμματικές ισοδυναμούν με ΝΠΑ. ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  10. Γλώσσες με συμφραζόμενα • L1={wcw | όπου w (a|b)*} που αποτελεί παράδειγμα της υποχρεωτικής δήλωσης των μεταβλητών πριν τη χρήση τους • L2={anbmcndm | όπου n1, m  1} παράδειγμα κλήσης διαδικασιών, όπου ο αριθμός των παραμέτρων πρέπει να ταιριάζει με όσες έχουν δηλωθεί στις αντίστοιχες δήλωσεις. • L3={anbncn | όπου n 0} • Λύση : έλεγχος των χαρακτηριστικών που δεν μπορούν να περιγραφούν από γλώσσες χωρίς συμφραζόμενα, κατά την σημασιολογική ανάλυση. ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  11. Σύγκριση ΚΕ - CFG • Οι κανονικές εκφράσεις ισοδυναμούν με ΝΠΑ. • Τα ΝΠΑ είναι ισοδύναμα με κανονικές γραμματικές. • Οι κανονικές γραμματικές είναι υποσύνολο των CFG. • Άρα γιατί δεν χρησιμοποιούμε CFG και για την περιγραφή των λεκτικών μονάδων; • Η περιγραφή CFG είναι πολύ πιο ισχυρή από ότι απαιτείται για τη λεκτική ανάλυση • Οι ΚΕ είναι εύκολες στην κατανόηση • Η υλοποίηση της λεκτική ανάλυσης μέσω ΝΠΑ είναι πολύ πιο αποδοτική. • Ο διαχωρισμός της λεκτικής από την συντακτική ανάλυση βοηθά στην εύκολη συντήρηση του μεταγλωττιστή. ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  12. Παραγωγή (derivation) • Μία συμβολοσειρά ανήκει σε μία γλώσσα G αν μπορούμε να την κατασκευάσουμε ξεκινώντας από το αρχικό σύμβολο της G και εφαρμόζοντας τους κανόνες παραγωγής. Μία τέτοια συμβολοσειρά ονομάζεται “προτασιακός τύπος” (sentential form). Π.χ., έστω expr = expr, “+” , expr | expr, “*” , expr | “(”, expr, “)” | “-” , expr | ID ; Μία παραγωγή (δημιουργία συμβολοσειράς) μπορεί να είναι: expr  expr , “+” , expr  ID , “+”, expr ID , “+” , ID ;  : παραγωγή σε ένα βήμα : παραγωγή σε μηδέν ή περισσότερα βήματα : παραγωγή σε ένα ή περισσότερα βήματα ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  13. Παραγωγή (συνέχεια) • Δύο γραμματικές ονομάζονται ισοδύναμες αν παράγουν την ίδια γλώσσα. Π.χ. S = A,B ; A = “a”,A | “” ; B = “b”,B | “” ; S = “a”, S | “a” | “b” | Β | “” ; B = “b”,B | “” ; παράγουν τη γλώσσα {ambn, όπου m,n 0} Επιλογές κατά την παραγωγή μίας συμβολοσειράς: • Ποιό μη-τερματικό σύμβολο να αντικαταστήσουμε; • Ποιό κανόνα παραγωγής να επιλέξουμε; ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  14. Αριστερότερη - Δεξιότερη Παραγωγή • Αριστερότερη Παραγωγή (leftmost derivation): σε κάθε βήμα αντικαθιστούμε το μη-τερματικό σύμβολο που βρίσκεται πιο αριστερά. • Δεξιότερη Παραγωγή (rightmost derivation): σε κάθε βήμα αντικαθιστούμε το μη-τερματικό σύμβολο που βρίσκεται πιο δεξιά. Αποκαλείται επίσης και κανονική παραγωγή. • Σε κάθε προτασιακή μορφή μίας γλώσσας είναι δυνατό να αντιστοιχούν πλήθος παραγωγών, τόσο αριστερότερων όσο και δεξιότερων. ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  15. Συντακτικό δένδρο (parse tree) • Συντακτικό δένδρο : δένδρο το οποίο κατασκευάζεται συνδέοντας τα σύμβολα που προκύπτουν από μία παραγωγή με το σύμβολο από το οποίο προήλθαν. Π.χ. expr = expr, “+” , expr | expr, “*” , expr | “(”, expr, “)” | “-” , expr | ID ; Η προτασιακή μορφή ID, “+”, ID, “*”, ID μπορεί να προκύψει ως εξής: expr expr, “+”, expr expr, “+”, expr , “*” , expr expr, “+”, expr , “*” , ID expr, “+”, ID, “*” , ID ID, “+”, ID, “*” , ID ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  16. Συντακτικό δένδρο (συνέχεια) • Eναλλακτικά μπορεί να χρησιμοποιηθεί και η ακόλουθη επίσης δεξιότερη παραγωγή: expr expr, “*”, exprexpr, “*”, ID expr, “+”, expr , “*” , IDexpr, “+”,ID,“*”,IDID, “+”, ID, “*” , ID ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

  17. Διφορούμενες γραμματικές • Τα φύλλα ενός συντακτικού δένδρου είναι τα τερματικά σύμβολα της γραμματικής ενώ οι εσωτερικοί του κόμβοι είναι μη-τερματικά σύμβολα. • Διφορούμενη (ambiguous) γραμματική : ονομάζεται μία γραμματική όταν υπάρχει προτασιακή μορφή της για την οποία υπάρχουν περισσότερα του ενός συντακτικά δένδρα. • Επιλύεται η ασάφεια (ambiguity); ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών

More Related