Μεταγλωττιστές Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα του ΤΕΙ Δυτικής Μακεδονίας και της Ανώτατης Εκκλησιαστικής Ακαδημίας Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3
Τυπικές γλώσσες (Μέρος 1 ο )
Σκοποί ενότητας Σκοπός της ενότητας είναι η περιγραφή των τυπικών γλωσσών. 5
Περιεχόμενα ενότητας (1/2) Ορισμοί. Γλώσσες. Γραμματικές. Ιεραρχία Chomsky. Αναγνωριστές. Κανονικές Εκφράσεις. 6
Περιεχόμενα ενότητας (2/2) Πεπερασμένα Αυτόματα. Ντετερμινιστικά Πεπερασμένα Αυτόματα. 7
Ορισμοί (1/7) Αλφάβητο: Ένα οποιοδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα. Παραδείγματα. { 0, 1 }: δυαδικό αλφάβητο. { Α, Β, Γ,, Ω }: ελληνικό αλφάβητο. Σύμβολο του αλφαβήτου: Κάθε στοιχείο ενός αλφαβήτου Σ. 8
Ορισμοί (2/7) Συµβολοσειρά. Μία πεπερασµένη παράθεση από σύµβολα του αλφαβήτου. Παραδείγματα. 0001100110. ΑΒΒΓΑΒΒΓ. Οι συµβολοσειρές θα παριστάνονται µε µικρά ελληνικά γράμματα. 9
Ορισμοί (3/7) Κενή Συμβολοσειρά: Η συµβολοσειρά που δεν περιέχει κανένα σύµβολο και παριστάνεται µε το σύμβολο ε. Μήκος συμβολοσειράς. Ο αριθµός των συµβόλων που την αποτελούν και συμβολίζεται µε. παραδείγματα. 0001100110 =10. ΑΒΒΓΑΒΒΓ =8. 10
Ορισμοί (4/7) Το σύνολο των συμβολοσειρών ενός αλφαβήτου με μήκος n συμβολίζεται με Σ n. Το σύνολο όλων των συμβολοσειρών ενός αλφαβήτου συμβολίζεται με Σ*. 11
Ορισμοί (5/7) Παράθεση δύο συμβολοσειρών α και β: Αποτελείται από όλα τα σύμβολα της α ακολουθούμενα από όλα τα σύμβολα της β. Συμβολισμός: α.β ή αβ. Παράδειγμα: α n = ααα α. ή πιο αυστηρά: α 0 = ε, α n+1 = α α n. 12
Ορισμοί (6/7) Πρόθεµα (prefix). Η α ονοµάζεται πρόθεµα της β εάν: Όλα τα στοιχεία της α εµφανίζονται µε τη σειρά στην αρχή της β. Επίθεµα ή κατάληξη (suffix). Η α ονοµάζεται επίθεµα της β εάν: Όλα τα στοιχεία της α εµφανίζονται µε τη σειρά στο τέλος της β. 13
Ορισμοί (7/7) Υποσυµβολοσειρά (substring). Η α ονοµάζεται υποσυµβολοσειρά της β εάν: Όλα τα στοιχεία της α εµφανίζονται µε τη σειρά στο εσωτερικό της β. 14
Γλώσσες (1/3) Γλώσσα επί του αλφαβήτου Σ: Κάθε σύνολο συµβολοσειρών του Σ, δηλαδή κάθε υποσύνολο του Σ*. Παραδείγματα. L 1 = {a n b 2 n n N}. L 2 = {abba}. L 3 = {x x: τα έγκυρα προγράμματα Pascal}. L 4 = {x x: έγκυρες προτάσεις στα ελληνικά}. 15
Γλώσσες (2/3) 16
Γλώσσες (3/3) 17
Γραμματικές (1/6) 18
Γραμματικές (2/6) Γραμματική (Συνέχεια). P: Πεπερασμένο σύνολο κανόνων παραγωγής. Οι κανόνες παραγωγής είναι διατεταγμένα ζεύγη (α,β) συμβολοσειρών του αλφαβήτου Τ Ν. P ( T N ) * x ( T N ) * Συµβολισµός: α -> β. S: αρχικό σύµβολο της γραμματικής. 19
Γραμματικές (3/6) Διαδικασία παραγωγής συμβολοσειρών από τη γραμματική: Αρχίζουμε με τη συμβολοσειρά που περιέχει μόνο το αρχικό σύμβολο. Από την τρέχουσα συμβολοσειρά παράγουμε μία καινούργια. Αντικαθιστώντας κάποια συμβολοσειρά της Που αντιστοιχεί σε αριστερό μέλος κανόνα, με το αντίστοιχο δεξιό μέλος. Επαναλαμβάνουμε όσες φορές χρειαστεί. 20
Γραμματικές (4/6) Διαδικασία παραγωγής συμβολοσειρών από τη γραμματική (Συνέχεια): Όταν καταλήξουμε σε συμβολοσειρά που να αποτελείται μόνο από τερματικά σύμβολα: Λέμε ότι αυτή η συμβολοσειρά παράγεται από τη γραμματική. 21
Γραμματικές (5/6) Κάθε γραµµατική G=(T,N,P,S) ορίζει µία γλώσσα L(G) T *. Λέµε ότι η γραµµατική παράγει τη γλώσσα και ορίζεται ως L(G) = { α T * S + α }. Το σύμβολο +. Σημαίνει ότι η συµβολοσειρά παράγεται σε ένα ή περισσότερα βήματα. 22
Γραμματικές (6/6) Παραγωγή σε µηδέν βήµατα α β. Σημαίνει α = β. Μία γλώσσα λέγεται τυπική (formal). Όταν υπάρχει γραµµατική που την παράγει. 23
Ιεραρχία Chomsky (1/4) Κατατάσσει τις γραμματικές και τις αντίστοιχες γλώσσες σε τέσσερεις κλάσεις. Γραμματικές τύπου 0. Γραμματικές χωρίς κανένα περιορισμό. Γραμματικές τύπου 1. Λέγονται και γραμματικές με συμφραζόμενα (Context-sensitive grammars). Περιέχει κανόνες της μορφής α->β. 24
Ιεραρχία Chomsky (2/4) Γραμματικές τύπου 1 (Συνέχεια). Η συμβολοσειρά α περιέχει τουλάχιστον ένα μη τερματικό σύμβολο. α β. Κατ εξαίρεση. Επιτρέπεται οι παραγόμενες γλώσσες να περιέχουν την κενή συμβολοσειρά (S->ε). Αρκεί το S να μην υπάρχει σε δεξί μέλος κανόνα. 25
Ιεραρχία Chomsky (3/4) Γραμματικές τύπου 2 ή γραμματικές χωρίς συμφραζόμενα. Context-free grammars. Περιέχει κανόνες της µορφής Α-> α. Α: ένα μη τερματικό σύμβολο. α: συμβολοσειρά. 26
Ιεραρχία Chomsky (4/4) Γραμματικές τύπου 3 ή κανονικές γραμματικές. Regular grammars. Περιέχει κανόνες της µορφής Α -> ε ή Α -> aβ, Α-> a. Α,Β: μη τερματικό σύμβολο. a: τερματικό σύμβολο. 27
Αναγνωριστές (1/4) Αναγνωριστής (recognizer). Μία αφηρημένη μηχανή Μ. Παίρνει ως είσοδο συμβολοσειρές ενός ορισμένου αλφαβήτου Σ. Δίνει ως έξοδο «ναι» ή «όχι». 28
Αναγνωριστές (2/4) Το σύνολο των συμβολοσειρών για τις οποίες η μηχανή απαντά «ναι». Ονομάζεται γλώσσα του αναγνωριστή. Συμβολίζεται με L(M). 29
Αναγνωριστές (3/4) Αφηρημένες μηχανές. Μηχανή Turing. Γραμμικά περιορισμένη μηχανή Turing. Αυτόματα Στοίβας. Περιορισμένα Αυτόματα. 30
Αναγνωριστές (4/4) Πίνακας 1. Αναγνωριστές. n Κλάση Τυπικών Γλωσσών Αντίστοιχος τύπος μηχανών 0 Υπολογίσιμες γλώσσες Μηχανές Turing 1 Γλώσσες με συφραζόμενα Γραμμικά περιορισμένες μηχανές Turing 2 Γλώσσες χωρίς συφραζόμενα Αυτόματα Στοίβας 3 Κανονικές γλώσσες Περιορισμένα Αυτόματα 31
Κανονικές Εκφράσεις (1/7) Παραδοσιακά χρησιµοποιούνται για την περιγραφή των λεκτικών μονάδων µιας γλώσσας προγραμματισμού. Συμβολίζονται με μικρά λατινικά γράμματα. Κάθε κανονική έκφαση r ορίζει µία γλώσσα L(r). 32
Κανονικές Εκφράσεις (2/7) Έστω ένα αλφάβητο Σ. Η κενή συµβολοσειρά είναι µία κανονική έκφραση L(ε)={ε}. Κάθε σύµβολο α του Σ είναι µία κανονική έκφραση L(α)={α}. Αν r και s κανονικές εκφράσεις τοτε η (rs) είναι κανονική έκφραση. Αντιστοιχεί στην παράθεση των r και s. Δηλαδή L(rs)=L(r)L(s). 33
Κανονικές Εκφράσεις (3/7) Έστω ένα αλφάβητο Σ (Συνέχεια). Αν r και s κανονικές εκφράσεις τοτε η (r s) είναι κανονική έκφραση. Αντιστοιχεί στην διάζευξη των r και s, δηλαδή L(r s) = L(r) U L(s). Αν r κανονική έκφραση τοτε η (r*) είναι κανονική έκφραση και αντιστοιχεί. Στο κλείσιµο Kleene της r. Δηλαδή L(r*) = L(r)*. 34
Κανονικές Εκφράσεις (4/7) Χρησιμοποιούνται συχνά οι εξής συντομογραφίες. Οι παρενθέσεις συνήθως παραλείπονται. Μεγαλύτερη προτεραιότητα έχει ο τελεστής * µετά της παράθεσης και µετά της διάζευξης. Ο συµβολισµός r + χρησιµοποιείται για το θετικό κλείσιµο του Kleene. Δηλαδή r + = rr*. Ο συµβολισµός [a,b,c,d] χρησιµοποιείται αντί του α b c d. 35
Κανονικές Εκφράσεις (5/7) Χρησιμοποιούνται συχνά οι εξής συντομογραφίες (Συνέχεια). Ο συμβολισμός r?. Χρησιμοποιείται για να δείξει ότι η έκφραση είναι προαιρετική. Η τελεία. Χρησιμοποιείται για να παραστήσει κάποιο σύµβολο του αλφαβήτου. 36
Κανονικές Εκφράσεις (6/7) Χρησιμοποιούνται συχνά οι εξής συντομογραφίες (Συνέχεια). Το σύμβολο /. Υποδηλώνει ότι ο επόµενος χαρακτήρας που ακολουθεί. Είναι σύµβολο του αλφαβήτου και όχι κάποιος ειδικός χαρακτήρας. Π.χ. η έκφραση /( /) µας περιγράφει την συµβολοσειρά ( ). 37
Κανονικές Εκφράσεις (7/7) Παράδειγμα. [1-9][0-9]* 0] (/.[0-9] + )? ((E e)(+ -)?[0-9] + )? Περιγράφει τις σταθερές κινητής υποδιαστολής χωρίς πρόσηµο της γλώσσας C. 38
Πεπερασμένα Αυτόματα Αφηρημένες μηχανές. Μπορούν να χρησιμοποιηθούν ως αναγνωριστές για κανονικές γλώσσες. Είδη πεπερασμένων αυτομάτων. Τα ντετερμινιστικά πεπερασμένα αυτόματα (ΝΠΑ). Τα μη ντετερμινιστικά πεπερασμένα αυτόματα (ΜΠΑ). Τα μη ντετερμινιστικά πεπερασμένα αυτόματα με μηδενικές μεταβάσεις (ΜΠΑ-ε). 39
Ντετερμινιστικά Πεπερασμένα Αυτόματα (1/3) Ένα ντετερµινιστικό πεπερασµένο αυτόµατο είναι µία διατεταγµένη πεντάδα M=(A,Q,δ,q 0,F) όπου: Α: Το αλφάβητο του αυτόματου. Q : Ένα µη κενό πεπερασµένο σύνολο καταστάσεων. δ: Q x A -> Q η συνάρτηση μετάβασης. q 0 є Q: Η αρχική κατάσταση. F Q: Οι τελικές καταστάσεις. 40
Ντετερμινιστικά Πεπερασμένα Αυτόματα (2/3) Αρχικά το αυτόµατο βρίσκεται στην κατάσταση q o. Από τη συμβολοσειρά εισόδου. Διαβάζεται ένα σύµβολο κάθε φορά. Αν το αυτόµατο βρίσκεται στην κατάσταση q και διαβαστεί το σύμβολο α. Το αυτόµατο µεταβαίνει στην κατάσταση δ(q,α). 41
Ντετερμινιστικά Πεπερασμένα Αυτόματα (3/3) Η διαδικασία συνεχίζεται µέχρι να εξαντληθεί η συμβολοσειρά εισόδου. Αν η κατάσταση στην οποία έχει µεταβεί το αυτόµατο είναι µία από τις καταστάσεις του συνόλου F. Η συµβολοσειρά έχει αναγνωριστεί επιτυχώς. Αλλιώς οδηγούµαστε σε αποτυχία. 42
Βιβλιογραφία 1. «Μεταγλωττιστές γλωσσών Προγραμματισμού: Θεωρία και Πράξη», Λάζος, Κ.Ε., Κατσαρός και Π.Θ., Καραΐσκος, Ζ.Κ. (2004), Εκδόσεις Θεσσαλονίκη, [ISBN:960-87723-4-6]. 2. «Μεταγλωττιστές», Παπασπύρου, Ν.Σ. και Σκορδαλάκης, Ε.Σ (2002), Εκδόσεις Συμμετρία, 2002, [ISBN: 978-960-266-135-2]. 43
Τέλος Ενότητας 44