Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι Εαρινό Εξάμηνο 2018-2019 Lec 09 18 /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής
Φάσεις μεταγλώττισης Αρχικό Πρόγραμμα Λεκτική Ανάλυση λεκτικές μονάδες Πίνακας Συμβόλων Τελικό Πρόγραμμα Συντακτική Ανάλυση συντακτικό δένδρο Σημασιολογική Ανάλυση συντακτικό δένδρο Παραγωγή Ενδιάμεσου Κώδικα ενδιάμεσος κώδικας Βελτιστοποίηση Ενδιάμεσου Κώδικα ενδιάμεσος κώδικας Παραγωγή Τελικού Κώδικα τελικός κώδικας Βελτιστοποίηση Τελικού Κώδικα Χειριστής Σφαλμάτων
Συντακτική Ανάλυση (1/2)
Συντακτική Ανάλυση (2/2)
Γραμματική Σύστημα παραγωγής συμβολοσειρών G, που αποτελείται από μια τετράδα (T,N,P,S) T τερματικά σύμβολα (terminals) που αποτελούν το αλφάβητο της γλώσσας. N μη-τερματικά σύμβολα (non-terminals) P κανόνες παραγωγής (production rules) της μορφής α β, όπου α και β (Τ Ν)* S αρχικό σύνολο, το οποίο είναι στοιχείο το Ν (start symbol)
Γραμματικές Ας υποθέσουμε, ότι p και q είναι δύο συμβολοσειρές, κάθε μία από τις οποίες αποτελείται * από μηδέν ή περισσότερα μη τερματικά ή/και τερματικά σύμβολα ( p, q V ). Αν η συμβολοσειρά q προκύπτει από την χρησιμοποιώντας μία και μόνο μία παραγωγή της γραμματικής G, τότε λέμε ότι η p παράγει άμεσα την q και αυτό γράφεται ως p q. Έτσι, αν p xwz και q xyz και η w y είναι μία παραγωγή της γραμματικής G, τότε p q. Αν η συμβολοσειρά προκύπτει από την p με εφαρμογή n παραγωγές της γραμματικής G, με n 1, τότε λέμε ότι η p παράγει την q με μία ή περισσότερες παραγωγές και αυτό γράφεται ως p + q. Αν η συμβολοσειρά q προκύπτει από την p, όπως προηγουμένως, μετά από n 0 παραγωγές, τότε απλά λέμε ότι η p παράγει την q και αυτό γράφεται ως p q. q p
Αναπαραγωγή συμβολοσειράς Η διαδικασία αρχίζει με το αρχικό σύμβολο. Αντικαθιστούμε μια υποσυμβολοσειρά α της τρέχουσας δ με την β εάν υπάρχει κανόνας παραγωγής α β Αν δ = γαγ' τότε από γαγ' -> γβγ' Όταν η συμβολοσειρά περιέχει μόνο τερματικά σύμβολα, λέμε ότι αυτή παράγεται από την γραμματική.
Αναπαραγωγή συμβολοσειράς. Παράδειγμα 1ο Έστω η γραμματική Τ = {a,b} N = {I,S,U} P = {I asb, S e S as, S bs} S = I T τερματικά σύμβολα (terminals) που αποτελούν το αλφάβητο της γλώσσας. N μη-τερματικά σύμβολα (nonterminals) P κανόνες παραγωγής (production rules) της μορφής α β, όπου α και β (Τ Ν)* S αρχικό σύνολο, το οποίο είναι στοιχείο το Ν (start symbol) Ι asb ab (παραγωγή) Ι asb absb abasb ababb
Αναπαραγωγή συμβολοσειράς. Παράδειγμα 2 ο Έστω η γραμματική Τ = {0,1-9,.,e} N = {Ν,D,Ds,E} P = { Ν DsE, D 0, D 1, D 2, D 3,...,D 9 Ds DDs, Ds D, E eds, E ε} S = Ν Ν 2DsE 24E 24 (παραγωγή) N 4DsE 45E 45eDs 45e6 45e6
Ορισμοί Συμβολοσειρά α Τ* παράγεται από την G όταν υπάρχει μια ακολουθία παραγωγών τέτοια ώστε α 1 = S α n = α και ισχύει α i α i+1 για κάθε i, 0 < i < n Μεταβατικό κλείσιμο α + β Ανακλαστικό Μεταβατικό κλείσιμο α * β Η γραμματική G παράγει την γλώσσα L(G), για την οποία L(G) = {α T* S + α}
Ιεραρχία Chomsky (1/3) Γραμματικές τύπου 0. Γραμματικές τύπου 1 (γραμματικές με συμφραζόμενα context sensitive grammars) Γραμματικές τύπου 2 (γραμματικές χωρίς συμφραζόμενα context free grammars) Γραμματικές τύπου 3 (κανονικές γραμματικές regular grammars)
Ιεραρχία Chomsky (2/3) Γραμματικές τύπου 0. Όλες οι γραμματικές χωρίς περιορισμούς. Γραμματικές τύπου 1 (γραμματικές με συμφραζόμενα context sensitive grammars) Γραμματικές της μορφής α β, έτσι ώστε η συμβολοσειρά α να περιέχει τουλάχιστον ένα μητερματικό σύμβολο και α β.
Ιεραρχία Chomsky (3/3) Γραμματικές τύπου 2 (γραμματικές χωρίς συμφραζόμενα context free grammars) Οι κανόνες παραγωγής έχουν μορφή α β, όπου η συμβολοσειρά α αποτελείται από ένα μη-τερματικό σύμβολο και η β είναι συμβολοσειρά. Γραμματικές τύπου 3 (κανονικές γραμματικές regular grammars) Οι κανόνες παραγωγής έχουν την μορφή Α aβ Α a Α ε A,B μη τερματικά και a τερματικό.
Αναγνωριστές Μια αφηρημένη μηχανή που δέχεται ως είσοδο μια συμβολοσειρά ενός αλφαβήτου και δίνει έξοδο ναι ή όχι. Αναφέρονται και ως αυτόματα. Μηχανή Turing πολυπλοκότερο υπολογιστικό μοντέλο Γραμμικά Περιορισμένη Μηχανή Turing ΜΤ με περιορισμό Μνήμης Αυτόματα Στοίβας Πεπερασμένα Αυτόματα.
Ιεραρχία Chomsky
Γραμματικές και Αναγνωριστικά Μοντέλα Γραμματική Αναγνωριστικά Μοντέλα Γραμματικές τύπου 0. Μηχανή Turing Γραμμικά Περιορισμένη Γραμματικές με συμφραζόμενα Μηχανή Turing Γραμματικές χωρίς συμφραζόμενα Αυτόματα Στοίβας Κανονικές γραμματικές Πεπερασμένα Αυτόματα.
Μετατροπή κανονικής έκφρασης σε γραμματική
Γραμματική Χωρίς Συμφραζόμενα
Γραμματική Χωρίς Συμφραζόμενα
Παράγωγο Δέντρο
Παράγωγο Δέντρο (Παράδειγμα)
Αφαιρετικό Συντακτικό Δέντρο
Σύνταξη και σημασία προγραμμάτων
Σύνταξη και σημασία προγραμμάτων
Σύνταξη και σημασία προγραμμάτων
Σύνταξη και σημασία προγραμμάτων
Σύνταξη και σημασία προγραμμάτων
Σύνταξη και σημασία προγραμμάτων
Σύνταξη και σημασία προγραμμάτων