Γλώσσς Προγραμματισμού Μταγλωττιστές Λκτική Ανάλυση II Πανπιστήμιο Μακδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακλλαρίου
Δομή Ππρασμένα Αυτόματα Νττρμινιστικά Ππρασμένα Αυτόματα Μη-Νττρμινιστικά Ππρασμένα Αυτόματα Μη-Νττρμινιστικά Ππρασμένα Αυτόματα μ Μηδνικές Μταβάσις Αναγωγές Αυτομάτων και Γραμματικών. Υλοποίηση Λκτικών Αναλυτών Προβλήματα Προσομοίωση ΠΑ Διαγράμματα Μτάβασης Σφάλματα
Ππρασμένα Αυτόματα Αφηρημένς μηχανές που μπορούν να χρησιμοποιηθούν σαν αναγνωριστές σ κανονικές γλώσσς. Νττρμινιστικά Ππρασμένα Αυτόματα (ΝΠΑ) Μη-Νττρμινιστικά Ππρασμένα Αυτόματα (ΜΠΑ) Μη-Νττρμινιστικά Ππρασμένα Αυτόματα μ μηδνικές Μταβάσις (ΜΠΑ-) Όλα τα παραπάνω ίναι ισοδύναμα από πλυράς υπολογιστικής ικανότητας.
Νττρμινιστικά Ππρασμένα Αυτόματα Αποτλούνται από Ππρασμένο σύνολο καταστάσων Q Σύνολο συμβόλων ισόδου (αλφάβητο) Σ Συνάρτηση μτάβασης δ η οποία ορίζι για κάθ κατάσταση q i και σύμβολο Σ μια νέα κατάσταση q j Q Αρχική κατάσταση q 0 Τλικές καταστάσις F Q
Λιτουργία του ΝΠΑ Αρχικά το αυτόματο "βρίσκται" στην αρχική κατάσταση. Το αυτόματο δέχται σύμβολα από την συμβολοσιρά ισόδου και ανάλογα μ το σύμβολο μταβαίνι στην κατάσταση που ορίζται από την συνάρτηση μτάβασης. Αφού "καταναλωθί" η συμβολοσιρά αν το αυτόματο βρίσκται σ μια από τις τλικές καταστάσις τότ αναγνωρίζι τη συμβολοσιρά. Διαφορτικά τη απορρίπτι.
Παράδιγμα Αλφάβητο Σ = {,} Καταστάσις Q = {0,1,2,3} Συνάρτηση Μτάβασης δ(0,)=1 δ(1,)=1 δ(2,)=2 δ(3,)=2 δ(0,)=2 δ(1,)=3 δ(2,)=2 δ(3,)=3 Τλικές Καταστάσις F = {3}
Διαγραμματική Αναπαράσταση (Γράφος Μτάβασης) 0 1 3 2
Διαγραμματική Αναπαράσταση (Γράφος Μτάβασης) 'Αλλς Συμβολοσιρές που αναγνωρίζι;, Κανονική Έκφραση ++ ** 0 1 3 2
Αυστηρός Ορισμός της Λιτουργίας του ΝΠΑ Συνάρτηση δ*(q,σ), όπου σ μια συμβολοσιρά. δ*(q,)=q δ*(q,σ')= δ(δ*(q,σ'),)
Κατάσταση Παγίδυσης Κατάσταση στην οποία καμιά συμβολοσιρά δν οδηγί σ τλική κατάσταση. 0 1 3 2
Αναγνώριση μιας Συμβολοσιράς από ένα ΝΠΑ Έτσι για παράδιγμα η συμβολοσιρά "then" μπορί να αναγνωριστί από το αυτόματο: t h e n
Μη-Νττρμινιστικά Ππρασμένα Αυτόματα Είναι δυνατό από μια κατάσταση να υπάρχουν πρισσότρς από μια μταβάσις για το ίδιο σύμβολο ισόδου. Σ ποια κατάσταση θα βρθί το αυτόματο; Μη-Νττρμινισμός! δ(0,) = {0,1} 0 1
Μη-Νττρμινιστικά Ππρασμένα Αυτόματα Αποτλούνται από: Ππρασμένο σύνολο καταστάσων Q Σύνολο συμβόλων ισόδου (αλφάβητο) Σ Συνάρτηση μτάβασης δ η οποία ορίζι για κάθ κατάσταση q i και σύμβολο Σ ένα σύνολο καταστάσων Q j P(Q). Αρχική κατάσταση q 0 Τλικές καταστάσις F Q Στην πρίπτωση αυτή το αυτόματο αναγνωρίζι τη συμβολοσιρά αν υπάρχι τουλάχιστον ένα μονοπάτι κτέλσης που να οδηγί σ μια τλική κατάσταση.
Παράδιγμα ΜΠΑ (i) Τι αναγνωρίζι το ακόλουθο αυτόματο; 0 1 2 3
Παράδιγμα ΜΠΑ (ii) Κανονική Έκφραση ( )* 0 1 2 3
Αυστηρός Ορισμός της Λιτουργίας του ΜΠΑ Συνάρτηση δ*(q,σ), όπου σ μια συμβολοσιρά. Ορίζται η συνάρτηση δ για σύνολα καταστάσων: δ (R,) = q R δ(q,) Η λιτουργία του αυτομάτου ορίζται ως δ*(q,)={q} δ*(q,σ')=δ (δ*(q,σ'),)
Μη-Νττρμινιστικά ΠΑ μ Μηδνικές Μταβάσις Μη-νττρμινιστικά αυτόματα μ "αυθόρμητς" μταβάσις Κνή συμβολοσιρά μέρος του αλφάβητου που δέχται το αυτόματο. "Αυθόρμητη μτάβαση": Μτάβαση σ μια κατάσταση μ βάση την κνή συμβολοσιρά [δ(q,)] 0 1 2
Μη-Νττρμινιστικά ΠΑ μ Μηδνικές Μταβάσις Αποτλούνται από: Ππρασμένο σύνολο καταστάσων Q Σύνολο συμβόλων ισόδου (αλφάβητο) Σ Συνάρτηση μτάβασης δ η οποία ορίζι για κάθ κατάσταση q i και σύμβολο Σ {} ένα σύνολο καταστάσων Q j P(Q). Αρχική κατάσταση q 0 Τλικές καταστάσις F Q Οι μταβάσις μπορούν να γίνουν μ 2 τρόπους: Σαν "κανονικό" ΜΠΑ Αυθόρμητα από μια μτάβαση που ορίζται από δ(q i,)
Παράδιγμα ΜΠΑ- ( )( )* 1 2 3 0 4 8 5 6 7
-Κλίσιμο Ορίζται ως -κλίσιμο(q i ) το σύνολο των καταστάσων οι οποίς ίναι προσβάσιμς από την κατάσταση q i μόνο μ -μταβάσις. Αναδρομικά ορίζται ως -κλίσιμο 0 (R) = R -κλίσιμο n+1 (R) = {δ(q,) q -κλίσιμο n (R)} -κλίσιμο(r) = {-κλίσιμο n (R)} όπου R ένα σύνολο καταστάσων του αυτομάτου.
Παράδιγμα -κλίσιμο(0) -κλίσιμο(0) = {1,5,7,4} 1 2 3 0 4 8 5 6 7
Αυστηρός Ορισμός της Λιτουργίας του ΜΠΑ- Συνάρτηση δ*(q,σ), όπου σ μια συμβολοσιρά. Δδομένου ότι η συνάρτηση δ ίναι: δ (R,) = q R δ(q,) Η λιτουργία του αυτομάτου ορίζται ως δ*(q,) = -κλίσιμο({q}) δ*(q,σ') = -κλισιμο(δ (δ*(q,σ'),))
Γλώσσς Προγραμματισμού Μταγλωττιστές Αναγωγές Ππρασμένων Αυτομάτων, Κανονικών Γραμματικών και Κανονικών Εκφράσων
Αναγωγές Είναι δυνατό να γίνουν οι ακόλουθς αναγωγές Από μια κανονική γραμματική σ ένα ΜΠΑ- Από ένα ΜΠΑ- σ κανονική γραμματική Από μια κανονική έκφραση σ ΜΠΑ- Από ΜΠΑ- σ κανονική έκφραση Ενδιαφέρον στην κατασκυή μταγλωττιστών έχουν οι αναγωγές σ ΜΠΑ- από κανονικές κφράσις και κανονικές γραμματικές.
Αναγωγή Κανονικής Γραμματικής σ ΜΠΑ- Έστω μια γραμματική G=(T,N,P,S). Το αντίστοιχο ΜΠΑ- (Σ,Q,δ,F) θα έχι: Σ = Τ, το αλφάβητο του ΜΠΑ- ίναι το αλφάβητο της γραμματικής Q = Ν {q f }, οι καταστάσις του ΜΠΑ- ίναι τα μητρματικά σύμβολα της γραμματικής, παυξημένα μ μια ακόμη κατάσταση που ίναι η τλική. Για κάθ κανόνα Α Β δ(α,)=b Α δ(α,)=q f A δ(α,)=q f F = {q f }, τλική κατάσταση του αυτομάτου.
Παράδιγμα Αναγωγής σ ΜΠΑ- Έστω η γραμματική Τ = {,} N = {I,S,U} P = {I S, S U U S S, S S U } S = I Ι S U q f
Αναγωγή ΚΕ σ ΜΠΑ- Η αναγωγή γίνται αναδρομικά μ κατάλληλη σύνθση των ΜΠΑ- που αντιστοιχούν σ υποκφράσις της αρχικής. Στα πόμνα το Μ(r) ίναι το ΜΠΑ- που αντιστοιχί στην έκφραση r.
Αναγωγές (i) Κνή συμβολοσιρά παράγται από το αυτόματο Μ(): q f Κανονική έκφραση που πριέχι ένα σύμβολο του αλφαβήτου, από το αυτόματο Μ(): t q f
Αναγωγές (ii) Συμβολοσιρά rs, όπου κάθ υποέκφραση παράγται από τα αυτόματα Μ(r) και Μ(s) αντίστοιχα, παράγται από το αυτόματο Μ(rs): M(r) M(s) t 1 q f1 t 2 q f2 M(r) M(s) t 1 t 2 q f2
Αναγωγές (iii) Συμβολοσιρά r s, όπου κάθ υποέκφραση παράγται από τα αυτόματα Μ(r) και Μ(s) αντίστοιχα, παράγται από το αυτόματο Μ(r s): M(r) t 1 q f1 t q f M(s) t 2 q f2
Αναγωγές (iv) Συμβολοσιρά r*, όπου κάθ υποέκφραση παράγται από τα αυτόματα Μ(r) και Μ(s) αντίστοιχα, παράγται από το αυτόματο Μ(r*): t M(r) t 1 q f1 q f
Παράδιγμα Αναγωγής ΚΕ σ ΜΠΑ- Κανονική Έκφραση α(α β)*β
Υλοποίηση ΝΠΑ; Πρόγραμμα το οποίο υλοποιί το ππρασμένο αυτόματο. s=s0; c = nextchr(); while (c!=eof){ s = move(s,c); c = nextchr();} if (s is in F) return "yes"; else return "no";
Μη-Νττρμινιστικά ΠΑ Υπάρχι πρόγραμμα που υλοποιί MΠΑ, όμως η πολυπλοκότητα του ίναι μγάλη. Άρα Μτατροπή των ΜΠΑ και ΜΠΑ- σ ΝΠΑ. Βασική ιδέα Εφόσον σ κάθ μτάβαση ένα ΜΠΑ μπορί να ίναι σ ένα σύνολο καταστάσων, το αντίστοιχο ΝΠΑ έχι σαν καταστάσις σύνολα καταστάσων του ΜΠΑ. Ομαδοποίηση καταστάσων ΜΠΑ σ μια νέα Κατάσταση.
Ορισμός Μτατροπής Έστω ΜΠΑ- και (Σ,Q,δ,q 0,F). Το αντίστοιχο ΝΠΑ (Σ',Q',δ',q' 0,F') έχι: Σ' = Σ Q' = P(Q), το δυναμοσύνολο των καταστάσων Q δ'(q',) = -κλίσιμο(δ (q',)), q' P(Q) q' 0 = -κλίσιμο(q 0 ) F' = {q' P(Q) q' F }
Βήματα Μτατροπής (i) Παραγωγή όλων των νέων καταστάσων P(Q). Δημιουργία της συνάρτησης μτάβασης, σύμφωνα μ την συνάρτηση δ. Αρχική κατάσταση ίναι το -κλίσιμο της αρχικής κατάστασης. Τλικές καταστάσις όλς κίνς που πριέχουν μια τλική κατάσταση του αρχικού ΜΠΑ.
Βήματα Μτατροπής (ii) Μπορί να γίνι η κατασκυή αυτόματα. Πρόβλημα: Πολλές μη-προσβάσιμς (απρόσιτς) καταστάσις, δηλαδή καταστάσις για τις οποίς δν υπάρχι συμβολοσιρά που να οδηγί το αυτόματα από την αρχική σ αυτή τη συμβολοσιρά. Διαγραφή από το αυτόματο. Απλός αλγόριθμος που πισκέπτται όλς τις προσιτές καταστάσις και διαγράφι τις υπόλοιπς.
Αλγόριθμος Μτατροπής (λιγότρς απρόσιτς καταστάσις) ΜΠΑ- (Σ,Q,δ,q 0,F) σ ΝΠΑ (Σ',Q',δ',q' 0,F'). q' 0 := e-closure({q 0 }) Q' := {q' 0 } S := {} while ( q' Q'-S) forll Σ q'' := e-closure(δ (q',)) δ'(q',) := q'' Q' := Q' {q''} S := S {q'} F' := {q' Q' q' F }
Ελαχιστοποίηση ΝΠΑ Όμως, οι λιγότρς δυνατές καταστάσις του ΝΠΑ, οδηγούν σ αποδοτικότρο κώδικα. Διαγραφή ισοδύναμων καταστάσων. Δύο καταστάσις q 1 και q 2 διακρίνονται από μια συμβολοσιρά σ, όταν δ*(q 1,σ) ίναι τλική κατάσταση νώ δ*(q 2,σ) δν ίναι τλική. Όταν δύο καταστάσις δν διακρίνονται, τότ ίναι ισοδύναμς. Οι ισοδύναμς καταστάσις μπορούν να συγχωνυτούν σ μια.
Αλγόριθμος Ελαχιστοποίησης ΝΠΑ (Σ,Q,δ,q 0,F) Τ:= {(q i,q j ) i<j, όπου μόνο ένα των q i,q j ίναι τλική κατάσταση} S:={ (q i,q j ) i<j, όπου ταυτόχρονα τα q i,q j ίναι τλικές ή μη τλικές κατάστασις (ισοδύναμς)} repet forll (q i,q j ) of S forll in Σ q' i = δ(q i,) q' j = δ(q j,) if (q' i,q' j ) T (or (q' j,q' i ) T) Τ:= T {(q i,q j )} S:=S {(q i,q j )} until δν γίνονται αλλαγές στα S και T
Υλοποίηση Λκτικών Αναλυτών
Υλοποίηση ΛΑ (Ι) Άρα η υλοποίηση του λκτικού αναλυτή αφορά την σχδίαση των ΜΠΑ- που αντιστοιχούν σ κάθ λκτική μονάδα. Συνδυασμός των ΜΠΑ- σ ένα, Τα ΜΠΑ- νώνονται σ ένα ΜΠΑ- μ μηδνικές μταβάσις από μια νέα αρχική κατάσταση στις αρχικές καταστάσις των ΜΠΑ- για κάθ λκτική μονάδα. i f t h e n
Υλοποίηση ΛΑ (ΙΙ) Πρόβλημα: Οι λκτικές μονάδς ίναι μέρος μιας μγάλης συμβολοσιράς ισόδου. Αναγνώριση προθέματος χωρίς να ίναι γνωστό το τέλος της. Παράδιγμα: Αναγνώριση των λκτικών ">" "=" ">=" Επισκόπηση πιπλέον χαρακτήρων και κατάλληλη οπισθοδρόμηση. Ορισμένοι χαρακτήρς "διαβάζονται" πρισσότρς από μια φορές. Αναγνώριση της συμβολοσιράς μ το μγαλύτρο μήκος.
Παράδιγμα > 1 2 = 3 0 4 > 5 6 = 7
Λιτουργία Σύνολο S που πριλαμβάνι αρχικά τις καταστάσις - κλίσιμο(q 0 ). Ανάγνωση συμβόλου σ από την ίσοδο και δημιουργία συνόλου S' από τις καταστάσις για τις οποίς υπάρχι μτάβαση για το σ από τις καταστάσις του S. Παραπάνω διαδικασία γίνται έως ότου να μην υπάρχουν άλλς μταβάσις, δηλαδή S' = {}. Το πλέον πρόσφατο σύνολο μ μια τλική κατάσταση ονομάζται πιτυχημένο σύνολο. Η λκτική μονάδα αυτής της κατάστασης πιστρέφται. Το αυτόματο οπισθοδρομί τόσους χαρακτήρς όσους έπονται από το πιτυχημένο σύνολο.
Παράδιγμα Αναγνώριση της >=8 0 > 1 2 4 > 5 = 3 6 = 7 > = 8 0 1 4 6 2 5 3
Υλοποίηση μ ΝΠΑ Δημιουργούμ το συνολικό ΜΠΑ-. Μτατροπή σ ΝΠΑ, διαγραφή απρόσιτων καταστάσων και λαχιστοποίηση. Προσομοιώνουμ το αυτόματο μέχρι να έλθι σ ένα σημίο για το οποίο δν υπάρχι μτάβαση. Οπισθοδρομούμ μέχρι να φτάσουμ σ μια απο τις τλικές καταστάσις του ΝΠΑ, όπου γίνονται οι νέργις που σχτίζονται μ αυτή.
Γλώσσς Προγραμματισμού Μταγλωττιστές Διαγράμματα Μτάβασης
Διαγράμματα Μτάβασης Τροποποιημένα ΝΠΑ που απικονίζουν ύγλωττα τις λιτουργίς του Λκτικού Αναλυτή. Διαφορές ΔΜ και ΝΠΑ Από τις τλικές καταστάσις δν υπάρχουν μταβάσις. Σ κάθ τλική κατάσταση αντιστοιχί κωδικός ξόδου, μοναδικός για κάθ λκτική μονάδα. Στις τλικές καταστάσις σημιώνονται ο αριθμός των συμβόλων (n) που πρέπι να οπισθοδρομήσι το αυτόματο, μ το συμβολισμό *n. Κατασκυή μ μπιρικό τρόπο (συνήθως)
Κατασκυή ΔΜ Για κάθ ομάδα λκτικών κατασκυάζται το ΝΠΑ και τον αντίστοιχο γράφο μτάβασης. Συμπληρώνται ο γράφος μτάβασης ώστ να προκύψι το ΔΜ. Συνδυάζονται τα ΔΜ ώστ να προκύψι το συνολικό ΔΜ του λκτικού αναλυτή.
Παράδιγμα (1) Γράφοι Μτάβασης Αναγνωριστικών L 1 2 L D Διάγραμμα Μτάβασης L L όχι L/D * 1 2 3 (Τ_ID) D
Παράδιγμα (2) Γράφοι Μτάβασης > = > 1 2 3 4 5 Διάγραμμα Μτάβασης > 0 1 = 2 (Τ_GE) όχι = * 3 (Τ_GT)
Ανάνηψη από Σφάλματα Εντοπισμός σχτικά μικρού αριθμού σφαλμάτων λόγω της πριορισμένης οπτικής. Έστω το ακόλουθο: whille (x>0) {..} Στρατηγικές ανάνηψης: Μέθοδος πανικού (pnic mode): Διαγραφή συμβόλων μέχρι να βρθί κατάλληλο πρόθμα. Διαγραφή/ισαγωγή/αντικατάσταση χαρακτήρα. Αντιμτάθση δύο χαρακτήρων.
Σύνοψη Ππρασμένα Αυτόματα Νττρμινιστικά Ππρασμένα Αυτόματα Μη-Νττρμινιστικά Ππρασμένα Αυτόματα Μη-Νττρμινιστικά Ππρασμένα Αυτόματα μ Μηδνικές Μταβάσις Αναγωγές Αυτομάτων και Γραμματικών. Υλοποίηση Λκτικών Αναλυτών Προβλήματα Προσομοίωση ΠΑ Διαγράμματα Μτάβασης Σφάλματα