Μεταγλωττιστές Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Λεκτική ανάλυση (Μέρος 1 ο )
Σκοποί ενότητας Σκοπός της ενότητας είναι η περιγραφή της λεκτικής ανάλυσης. 5
Περιεχόμενα ενότητας Λεξική ανάλυση κι αυτόματα. Σύνοψη. 6
(1/40) Κατασκευή ενός λεξικού αναλυτή. Δήλωση tokens ως ΚΕ. Κατασκευή Μη ντετερμινιστικού πεπερασμένου αυτόματου (ΜΠΑ) για κάθε ΚΕ. Ανάπτυξη Thompson. Ανάπτυξη Glushkov. 7
(2/40) Κατασκευή ενός λεξικού αναλυτή (Συνέχεια). Μετατροπή ΜΠΑ σε Ντετερμινιστικό πεπερασμένο αυτόματο (ΝΠΑ). Ανάπτυξη Υποσυνόλων. Ελαχιστοποίηση ΜΠΑ. Αλγόριθμος Hopcroft. Υλοποίηση Εφαρμογής. 8
(3/40) Σχήμα 1. Λεξική ανάλυση κι αυτόματα (1), (πηγή: διδάσκων, 2014). 9
(4/40) Μετατροπή κανονικών εκφράσεων σε μη ντετερμινιστικά αυτόματα. Ανάπτυξη thompson. Γίνεται συντακτική ανάλυση της κανονικής έκφρασης. 10
(5/40) Κατασκευάζονται τα αυτόματα. Αντιστοιχούν σε κάθε μία από τις στοιχειώδεις κανονικές εκφράσεις που προκύπτουν. Σχήμα 2. Λεξική ανάλυση κι αυτόματα (2), (πηγή: διδάσκων, 2014). 11
(6/40) Αν θεωρήσουμε M(r) και M(s) τα αυτόματα των εκφράσεων r και s. Τότε το αυτόματο M(r s) είναι το: Σχήμα 3. Θεώρηση M(r) και M(s) τα αυτόματα των εκφράσεων r και s, (πηγή: διδάσκων, 2014). 12
(7/40) Μετατροπή κανονικών εκφράσεων σε μη προσδιοριστικά αυτόματα. Ανάπτυξη thompson. Για την κανονική έκφραση rs παράγεται το M(r s). Σχήμα 4. Κανονική έκφραση rs όπου παράγεται το αυτόματο M(rs), (πηγή: διδάσκων, 2014). 13
(8/40) Για την κανονική έκφραση r* παράγεται το αυτόματο Μ(r*): Σχήμα 5. Κανονική έκφραση r* όπου παράγεται το αυτόματο M(r*), (πηγή: διδάσκων, 2014). Για την κανονική έκφραση (r) χρησιμοποιείται το αυτόματο Μ(r). 14
(9/40) όνομα = {γράμμα}({γράμμα} {ψηφίο})* Το δένδρο που προκύπτει από τη συντακτική ανάλυση της έκφρασης είναι το: Σχήμα 6. Δέντρο που προκύπτει από τη συντακτική ανάλυση της έκφρασης, (πηγή: διδάσκων, 2014). 15
Γράμμα. (10/40) Σχήμα 7. Γράμμα, (πηγή: διδάσκων, 2014). 16
Ψηφίο. (11/40) Σχήμα 8. Ψηφίο, (πηγή: διδάσκων, 2014). 17
({γράμμα} {ψηφίο}). (12/40) Σχήμα 9. Γράμμα ψηφίο, (πηγή: διδάσκων, 2014). 18
(13/40) ({γράμμα} {ψηφίο})*. Σχήμα 10. Γράμμα ψηφίο*, (πηγή: διδάσκων, 2014). 19
(14/40) {γράμμα}({γράμμα} {ψηφίο})*. Σχήμα 11. Γράμμα γράμμα- ψηφίο*, (πηγή: διδάσκων, 2014). 20
(15/40) Μετατροπή ΜΠΑ σε ΝΠΑ. Ανάπτυξη υποσυνόλων. Οι καταστάσεις του ντετερμινιστικού αυτόματου. Που προκύπτει ως αποτέλεσμα. Είναι υποσύνολα των καταστάσεων του μη ντετερμινιστικού αυτόματου. 21
(16/40) Δύο καταστάσεις p και q του αρχικού μη ντετερμινιστικού αυτόματου. Ανήκουν στο ίδιο υποσύνολο. Αν για κάποιο χαρακτήρα-πρότυπο οι μεταβάσεις του μη ντετερμινιστικού αυτόματου οδηγούν. Είτε στην p. Είτε στην q. 22
(17/40) Αν υπάρχει μία μετάβαση από την κατάσταση p στην q. Μέσω του χαρακτήρα - πρότυπο a. Και μία μετάβαση από την q στην u. Τότε οι καταστάσεις q και u ανήκουν στο ίδιο υποσύνολο καταστάσεων. 23
(18/40) Ανάπτυξη υποσυνόλων. Συμβολίζουμε με reach(f, ci). Το σύνολο όλων των καταστάσεων που είναι προσβάσιμες από τις καταστάσεις του F μέσω μιας μετάβασης με επιγραφή ci. Συμβολίζουμε με εsucc(f). Το σύνολο των καταστάσεων, που είναι προσβάσιμες από το F μετά από πεπερασμένο αριθμό μεταβάσεων-ε. 24
(19/40) Ανάπτυξη υποσυνόλων (Συνέχεια). Θεωρούμε ως νέα κατάσταση του ΝΠΑ το σύνολο εsucc({«αρχή»}). Για την κατάσταση αυτή και για κάθε νέο υποσύνολο F S. Το σύνολο των προσβάσιμων καταστάσεων, μέσω μιας μετάβασης με επιγραφή a, δίνεται ως εsucc(reach(f,a)). Ο αλγόριθμος συνεχίζει για όλους τους χαρακτήρες a Σ. 25
(20/40) Ανάπτυξη υποσυνόλων (Συνέχεια). Μία νέα κατάσταση είναι κατάληξη. Αν το υποσύνολο καταστάσεων στο οποίο αντιστοιχεί. Περιέχει μία κατάληξη του ΜΠΑ. 26
(21/40) Ανάπτυξη υποσυνόλων Παράδειγμα. Σχήμα 12. Ανάπτυξη υποσυνόλων Παράδειγμα 1, (πηγή: διδάσκων, 2014). 27
(22/40) Ανάπτυξη υποσυνόλων Παράδειγμα. Σχήμα 13. Ανάπτυξη υποσυνόλων Παράδειγμα 2, (πηγή: διδάσκων, 2014). 28
(23/40) Ανάπτυξη υποσυνόλων Αλγόριθμος. Είσοδος. Ένα μη προσδιοριστικό πεπερασμένο αυτόματο Μ. Έξοδος. Ένα προσδιοριστικό πεπερασμένο αυτόματο D με γλώσσα L(M). Περιγραφή. Ο αλγόριθμος κατασκευάζει τον πίνακα μεταβάσεων Τ, του D. 29
Περιγραφή (Συνέχεια). (24/40) Οι καταστάσεις και οι μεταβάσεις, που προστίθενται στο αυτόματο D υπολογίζονται ως εξής: 30
(25/40) Περιγραφή (Συνέχεια). Μία κατάσταση του D γίνεται κατάληξη. Αν το αντίστοιχο σύνολο των καταστάσεων περιέχει τουλάχιστο μία κατάληξη του Μ. 31
(26/40) Ελαχιστοποίηση προσδιοριστικών πεπερασμένων αυτομάτων. Τα προσδιοριστικά αυτόματα. Που προκύπτουν ως αποτέλεσμα μιας διαδικασίας ανάπτυξης υποσυνόλων. Χαρακτηρίζονται συχνά από μεγάλους πίνακες μεταβάσεων. Οφείλεται στην αύξηση του αριθμού των καταλήξεων. 32
(27/40) Έχει αποδειχθεί ότι για δοθέν προσδιοριστικό αυτόματο. Υπάρχει ένα μοναδικό ισοδύναμο αυτόματο. Με τον ελάχιστο αριθμό καταστάσεων. 33
(28/40) Αλγόριθμος των Hopcroft & Ullman. Παράγει το ελάχιστο αυτόματο. Διαιρώντας τις καταστάσεις του αρχικού σε σύνολα. Ώστε όλες οι καταστάσεις του ίδιου συνόλου να αναγνωρίζουν τις ίδιες συμβολοσειρές. 34
(29/40) Ελαχιστοποίηση ΝΠΑ. Λέμε ότι σε ένα αυτόματο. Μία συμβολοσειρά w διακρίνει την κατάσταση «s» από την κατάσταση «t». Αν ξεκινώντας από την «s» και διοχετεύοντας την w. Οδηγούμαστε σε κατάληξη, ενώ δε συμβαίνει το ίδιο με την κατάσταση «t». 35
Η συμβολοσειρά ε. (30/40) Διακρίνει τις καταλήξεις από τις υπόλοιπες καταστάσεις του αυτόματου. Αρχικά διακρίνουμε το χώρο των καταστάσεων. Σε καταλήξεις και μη καταλήξεις. 36
(31/40) Σταδιακά συγκροτούνται σύνολα καταστάσεων. Ώστε για κάθε ζεύγος καταστάσεων από διαφορετικά σύνολα. Αυτές να έχουν διακριθεί από κάθε συμβολοσειρά εισόδου. Ενώ για κάθε ζεύγος καταστάσεων του ίδιου συνόλου να μην έχει συμβεί ακόμη κάτι τέτοιο. 37
(32/40) (+ -)? {ψηφίο} {ψηφίο}* Σχήμα 14. Λεξική ανάλυση και αυτόματα, (πηγή: διδάσκων, 2014). 38
(33/40) Πρέπει να συμπεριλάβουμε και την κατάσταση «λάθος». Σχήμα 15. Κατάσταση «λάθος», (πηγή: διδάσκων, 2014). 39
(34/40) 40
(35/40) Σχήμα 16. Συνέχιση συμπλήρωσης πίνακα (1), (πηγή: διδάσκων, 2014). Η διαδικασία συμπλήρωσης του πίνακα συνεχίζεται. Μέχρι να μην είναι δυνατή η εύρεση νέου ζεύγους καταστάσεων. Που διακρίνονται από κάποιο χαρακτήρα εισόδου. 41
(36/40) Σχήμα 17. Συνέχιση συμπλήρωσης πίνακα (2), (πηγή: διδάσκων, 2014). Τελικά μόνο οι καταστάσεις 1 και 2 ανήκουν στην ίδια κλάση ισοδυναμίας. Μετονομάζουμε την κατάσταση 2 σε 1 και παίρνουμε το ελάχιστο αυτόματο του σχήματος. 42
(37/40) Σχήμα 18. Λεξική ανάλυση κι αυτόματα, (πηγή: διδάσκων, 2014). 43
(38/40) Παράδειγμα ελαχιστοποίησης προσδιοριστικών πεπερασμένων αυτομάτων. Σχήμα 19. Ελαχιστοποίηση προσδιοριστικών πεπερασμένων αυτομάτων, (πηγή: διδάσκων, 2014). 44
(39/40) Οι μεταβάσεις όλων των καταλήξεων οδηγούν σε καταλήξεις. Τόσο για την περίπτωση που ο χαρακτήρας εισόδου είναι γράμμα. Όσο και στην περίπτωση που αυτός είναι ψηφίο. Άρα οι τρεις καταλήξεις δε διακρίνονται από κανένα χαρακτήρα. 45
(40/40) Σχήμα 20. Τελικό σχήμα, (πηγή: διδάσκων, 2014). 46
Σύνοψη (1/2) Ο Λεξικός Αναλυτής μετατρέπει τη συμβολοσειρά εισόδου σε λεκτικές μονάδες. Με βάση τα πρότυπα που τις περιγράφουν. Η περιγραφή των προτύπων επιτυγχάνεται με την βοήθεια κανονικών εκφράσεων. 47
Σύνοψη (2/2) Οι κανονικές εκφράσεις μπορούν να μετατραπούν σε ΜΠΑ. Τα οποία με την σειρά τους μπορούν να μετατραπούν σε ΝΠΑ. Τα τελευταία μπορούν να αναγνωρίσουν πολύ γρήγορα τις λεκτικές μονάδες της εισόδου. Με τη βοήθεια ενός πίνακα μετάβασης. 48
Βιβλιογραφία 1. «Μεταγλωττιστές γλωσσών Προγραμματισμού: Θεωρία και Πράξη», Λάζος, Κ.Ε., Κατσαρός και Π.Θ., Καραΐσκος, Ζ.Κ. (2004), Εκδόσεις Θεσσαλονίκη, [ISBN:960-87723-4-6]. 2. «Μεταγλωττιστές», Παπασπύρου, Ν.Σ. και Σκορδαλάκης, Ε.Σ (2002), Εκδόσεις Συμμετρία, 2002, [ISBN: 978-960-266-135-2]. 49
Τέλος Ενότητας 50