ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Γραμματικές Διδάσκων: Επικ. Καθ. Γεώργιος Μανής
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
Γραμματικές Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής
Στισ Φάςεισ τησ Μεταγλώττιςησ λεκτική ανάλυση συντακτική ανάλυση Πίνακασ Συμβόλων ςθμαςιολογικι ανάλυςθ παραγωγι ενδιάμεςου κϊδικα Διαχείριςθ λακϊν βελτιςτοποίθςθ ενδιάμεςου κϊδικα παραγωγι τελικοφ κϊδικα βελτιςτοποίθςθ τελικοφ κϊδικα
Γραμματικέσ Τ: αλφάβθτο τερματικϊν ςυμβόλων Ν: αλφάβθτο μθ τερματικϊν ςυμβόλων T N = P: πεπεραςμζνο ςφνολο κανόνων παραγωγισ P ( T N ) * x ( T N ) * ςυμβολιςμόσ: α -> β S: αρχικό ςφμβολο
Παραγωγθ ςυμβολοςειρών Η β παράγεται από τθ α ( α β ) όταν υπάρχουν α,β,γ,δ ( T N ) * τζτοιεσ ϊςτε ο κανόνασ α -> β ανικει ςτθ γραμματικι και α=γα δ και β=γβ δ Η α T* παράγεται από τθ γραμματικι G με αρχικό ςφμβολο S όταν: α 1 =S, α n =α, α i α i+1 για 1<=i<=n-1
Παραγωγθ τυπικθσ γλώςςασ Κάκε γραμματικι G=(T,N,P,S) ορίηει μία γλϊςςα L(G) T * Λζμε ότι θ γραμματικι παράγει τθ γλϊςςα και ορίηεται ωσ L(G) = { α T * S + α } το ςφμβολο + ςθμαίνει ότι θ ςυμβολοςειρά παράγεται ςε ζνα ι περιςςότερα βιματα Μία γλϊςςα λζγεται τυπικι όταν υπάρχει γραμματικι που τθν παράγει
Ιεραρχία Chomsky Γλώσσες Γραμματικές Μηχανές Κανονικζσ Γλϊςςεσ Κανονικζσ Γραμματικζσ Πεπεραςμζνα αυτόματα Γλϊςςεσ Χωρίσ Συμφραηόμενα Γλϊςςεσ Με Συμφραηόμενα Υπολογίςιμεσ γλϊςςεσ Γραμματικζσ Χωρίσ Συμφραηόμενα Γραμματικζσ Με Συμφραηόμενα Γραμματικζσ χωρίσ περιοριςμοφσ Μθ-Ντετερμινιςτικά Αυτόματα Με Στοίβα Γραμμικά Πεπεραςμζνα Αυτόματα Μθχανι Turing
Γραμματικέσ χωρίσ περιοριςμοφσ Γραμματικζσ χωρίσ περιοριςμοφσ τφπου 0 προταςιακισ ςφνταξθσ κανόνεσ τθσ μορφισ ς -> τ ς V +, V = T N τ V * οι γραμματικζσ αυτζσ είναι δφςκολο να ςυνταχκοφν και ο τρόποσ αυτόσ παράςταςθσ δεν είναι φιλικόσ προσ τον άνκρωπο. Οι πρακτικζσ τουσ εφαρμογζσ είναι ελάχιςτεσ ζωσ ανφπαρκτεσ
Γραμματικέσ με ςυμφραζόμενα Γραμματικζσ με ςυμφραηόμενα τφπου 1 κανόνεσ τθσ μορφισ ααβ -> αxβ Α Ν x V + α,β V * κατ εξαίρεςθ: επιτρζπεται το S -> ε ϊςτε να παράγεται θ κενι ςυμβολοςειρά αρκεί το S να μθν υπάρχει ςε δεξί μζλοσ κανόνα
Γραμματικέσ με ςυμφραζόμενα Ιςοδφναμθ μορφι γραμματικϊν με ςυμφραηόμενα, καλοφνται μονότονες γραμματικζσ κανόνεσ τθσ μορφισ α -> β α,β V + θ α περιζχει τουλάχιςτόν ζνα μθ τερματικό ςφμβολο α β κατ εξαίρεςθ: επιτρζπεται το S -> ε ϊςτε να παράγεται θ κενι ςυμβολοςειρά αρκεί το S να υπάρχει μόνο ςε δεξί μζλοσ κανόνα
Γραμματικέσ με ςυμφραζόμενα Παράδειγμα καταςκευισ γραμματικισ τφπου 1 κα καταςκευάςουμε γραμματικι για τθ γλϊςςα: α n b n c n αποδεικνφεται ότι δε μπορεί να καταςκευαςτεί γραμματικι τφπου 2 για τθ γλϊςςα αυτι αρχίηοντασ από τθν απλι περίπτωςθ S -> abc αν προςκζςουμε ζνα a ςτθν αρχι κα πρζπει να προςκζςουμε κάτι και ςτο τζλοσ S -> asq ςτο τζλοσ πρζπει να υπάρχει κάτι με b και c αλλά όχι απλά να προςκζςουμε bc αφοφ όλα τα b πρζπει να βρίςκονται πριν τα c
Γραμματικέσ με ςυμφραζόμενα κάτι τζτοιο επιτρζπει το b να είναι πάντα πριν το c bqc -> bbcc πάλι δεν τελειϊςαμε αφοφ τα Q βρίςκονται δεξιά από τα c, αυτό μπορεί να διορκωκεί με τον κανόνα cq -> Qc θ γραμματικι ολοκλθρϊκθκε
Γραμματικέσ με ςυμφραζόμενα Παραγωγι ςυμβολοςειράσ από τθ γραμματικι S S->aSQ asq S->aSQ aasqq S->abc aaabcqq cq->qc aaabqcq bqc->bbcc aaabbccq cq->qc aaabbcq c cq->qc aaabbqcc bqc->bbcc aaabbbccc
Γραμματικέσ χωρίσ ςυμφραζόμενα Γραμματικζσ χωρίσ ςυμφραηόμενα - τφπου 2 κανόνεσ τθσ μορφισ Α -> α Α Ν α V * Παράδειγμα <name> ::= tom john harry <sentence> ::= <name> <list> and <name> <list> ::= <name>, <list> <name>
Γραμματικέσ χωρίσ ςυμφραζόμενα Γραμματικι τφπου LL(1) L: Left to right - αναφζρεται ςτον τρόπο που ςαρϊνεται θ ςυμβολοςειρά ειςόδου, από τα αριςτερά ςτα δεξιά L: Left most derivation θ διαδικαςία καταςκευισ του ςυντακτικοφ δζντρου αντιςτοιχεί ςτθν αριςτερότερθ παραγωγι (1): one look ahead symbol για να επιλζξουμε ανάμεςα ςε πικανοφσ κανόνεσ ποιοσ είναι ο επόμενοσ κανόνασ που πρζπει να εφαρμοςκεί αρκεί να γνωρίηουμε το επόμενο ςφμβολο τθσ ςυμβολοςειράσ ειςόδου
Γραμματικέσ χωρίσ ςυμφραζόμενα Παράδειγμα γραμματικισ τφπου LL(1) Ε -> ΤΕ Ε -> +ΤΕ ε Τ -> FT T -> x FT ε F -> (E) id id -> a b c d Παραγωγι: (a+bxc+bx(a+c))xd
Κανονικέσ γραμματικέσ Κανονικζσ γραμματικζσ τφπου 3 γραμματικζσ πεπεραςμζνων καταςτάςεων κανόνεσ τθσ μορφισ Α -> α Α -> ββ Α,Β Ν α Τ {ε} β Τ
Κανονικέσ γραμματικέσ Παράδειγμα S -> a A A -> a A A -> d A A -> ε Παραγωγι: ςειρζσ από α και d που ξεκινοφν υποχρεωτικά από α
Παραγωγθ ςυμβολοςειρών από γραμματικθ ζνα ςφνολο που περιζχει το αρχικό ςφμβολο τθσ γραμματικισ τθ διαπερνοφμε από αριςτερά προσ τα δεξιά ψάχνοντασ για υποςυμβολοςειρζσ που ταιριάηουν με το αριςτερό μζλοσ κάποιου γραμματικοφ κανόνα για κάκε τζτοια υποςυμβολοςειρά που βρίςκουμε δθμιουργοφμε και ζνα αντίγραφο τθσ ςυμβολοςειράσ ειςόδου και αντικακιςτοφμε τθν υποςυμβολοςειρά που βρίςκουμε ςτο αριςτερό μζλοσ του κανόνα με αυτό που βρίςκεται ςτο δεξιό μζλοσ και τθν τοποκετοφμε ςτο ςφνολο των προσ εξζταςθ ςυμβολοςειρϊν αν θ ςυμβολοςειρά που παράχκθκε δεν περιζχει μθ τερματικά ςφμβολα τότε τθν τοποκετοφμε ςε ζνα ςφνολο που περιζχει τισ ςυμβολοςειρζσ που παράχκθκαν ςτθ ςυνζχεια αντλοφμε μία νζα προσ εξζταςθ ςυμβολοςειρά από το ςφνολο των προσ εξζταςθ ςυμβολοςειρϊν και επαναλαμβάνουμε τα προθγοφμενα βιματα
Παραγωγθ ςυμβολοςειρών από γραμματικθ Παράδειγμα τθσ γενικισ περίπτωςθσ για τθ γραμματικι S -> abc S -> asq bqc -> bbcc cq -> Qc θ οποία περιγράφει τθ γλϊςςα α n b n c n
Παραγωγθ ςυμβολοςειρών από γραμματικθ Εκτζλεςθ του αλγορίκμου S abc asq asq aabcq aasqq aasqq aabqc aabqc aaabcqq aaasqqq aaabcqq aaasqqq aabbcc aaasqqq aabbcc aaabqcq aabbcc aaabqcq aaaabcqqq aaaasqqqq aaabqcq aaaabcqqq aaaasqqqq κλπ.
Παραγωγθ ςυμβολοςειρών από γραμματικθ Παρατιρθςθ: ςτθν περίπτωςθ που επιχειριςουμε να μθ φτιάξουμε όλα τα αντίγραφα που προκφπτουν από όλουσ τουσ κανόνεσ αλλά να επιλζξουμε ζναν και να κάνουμε εκεί τθν αντικατάςταςθ υπάρχει κίνδυνοσ να χαλάςουμε τα ςυμφραηόμενα τθσ γραμματικισ. Ζςτω θ γραμματικι S -> AC A -> b AC -> ab αντικακιςτϊντασ με βάςθ το Α->b θ γραμματικι δε κα παράγει τίποτα, ενϊ κα μποροφςε να παράγει το ab
Γραμματικέσ ενεργειών Κάκε κανόνασ εμφανίηει ωσ ζξοδο κάποια ςυμβολοςειρά Παράδειγμα Sum -> Digit { make it the result } Sum -> Sum + Digit { add it to the previous result} Digit -> 0 { take a 0 } Digit -> 1 { take a 1 } Digit -> 9 {take a 9 } Με είςοδο 3+5 θ γραμματικι κα παράξει take a 3 make it result take a 5 add it to the previous result
Κατηγορικέσ γραμματικέσ κάκε μθ τερματικό ςφμβολο ςυνοδεφεται από ζνα ι περιςςότερα κατθγοριματα κάκε κατθγόρθμα είναι μία απλι τιμι π.χ. αρικμόσ, ςυμβολοςειρά κλπ. ςε ζνα κανόνα (π.χ μακθματικό τφπο) ςυνδυάηουμε τα κατθγοριματα κάποιων από τα μθ τερματικά ςφμβολα του κανόνα για να παράγουμε κάποια άλλα κατθγοριματα για μθ τερματικά ςφμβολα αν το κατθγόρθμα που υπολογίηεται ανικει ςε μθ τερματικό ςφμβολο που βρίςκεται ςε αριςτερό μζλοσ ενόσ κανόνα τότε το κατθγόρθμα κεωρείται ότι ςυντίκεται (derived, synthesized) αν το κατθγόρθμα που υπολογίηεται ανικει ςε μθ τερματικό ςφμβολο που βρίςκεται ςε δεξιό μζλοσ ενόσ κανόνα τότε το κατθγόρθμα κεωρείται ότι κλθρονομείται (inherited)
Κατηγορικέσ γραμματικέσ Παράδειγμα ςτο παράδειγμα για λόγουσ απλότθτασ κεωροφμε ζνα κατθγόρθμα για κάκε μθ τερματικό ςφμβολο το οποίο ςυμβολίηεται με A x, όπου x θ ςειρά με τθν οποία ςυναντάται το μθ τερματικό ςφμβολο ςτον κανόνα Sum -> Digit { A o = A 1 } Sum -> Sum + Digit { A o = A 1 + A 3 } Digit -> 0 { A o = 0 } Digit -> 1 { A o = 1 } Digit -> 9 { A o = 9 }
Δυναμικότητα γραμματικών και μεταφραςτέσ Το ςφνολο όλων των λεκτικά ορκϊν προγραμμάτων μπορεί να περιγραφεί από μία κανονικι γραμματικι, π.χ.: δεν υπάρχουν λευκοί χαρακτιρεσ ανάμεςα ςε δεςμευμζνεσ λζξεισ δε ςυναντάμε end-of-file ενϊ ζχουν ανοίξει ςχόλια και δεν ζχουν κλείςει τα αναγνωριςτικά ξεκινοφν από γράμμα και ακολουκεί μία ςειρά γραμμάτων και αρικμϊν κλπ
Δυναμικότητα γραμματικών και μεταφραςτέσ Το ςφνολο των ςυντακτικά ορκϊν προγραμμάτων περιγράφεται από μία γραμματικι χωρίσ ςυμφραηόμενα: βρζκθκε else χωρίσ if εκχϊρθςθ ςε αρικμθτικι ςτακερά κλπ. Το ςφνολο των ςθμαςιολογικά ορκϊν προγραμμάτων περιγράφεται από μία γραμματικι με ςυμφραηόμενα θ μεταβλθτι αυτι ζχει δθλωκεί; πρόκειται για απλι μεταβλθτι ι πίνακα; γράφουμε μιπωσ ζξω από τα όρια ενόσ πίνακα;
Δυναμικότητα γραμματικών και μεταφραςτέσ Το ςφνολο των προγραμμάτων που τερματίηουν ςε πεπεραςμζνο χρόνο με ςυγκεκριμζνθ είςοδο μπορεί να περιγραφεί από μία (πολφ πολφπλοκθ) γραμματικι χωρίσ περιοριςμοφσ Το ςφνολο των προγραμμάτων που λφνουν ζνα ςυγκεκριμζνο πρόβλθμα δε μπορεί να περιγραφεί από καμία γραμματικι
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σημειώματα
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1125.
Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Επικ. Καθ. Γεώργιος Μανής. «Μεταφραστές. Γραμματικές». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1125.
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/