Γλώσσες Προγραμματισμού Μεταγλωττιστές Λεκτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Επιμέλεια: Τίκβα Χριστίνα
Advertisements

Copyright © 2005 Elsevier Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού Πραγματολογία των Γλωσσών Προγραμματισμού Michael L. Scott.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
ΓΡΑΜΜΑΤΙΚΕΣ ΧΩΡΙΣ ΣΥΜΦΡΑΖΟΜΕΝΑ I
27 Ιουνίου 2014 ΔΙΑΦΑΝΕΙΑ 1 ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. – ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ ΑΥΤΟΜΑΤΑ Ι Αυτόματο ελέγχου πρόσβασης με.
ΘΕΩΡΙΑ ΓΛΩΣΣΩΝ & ΑΥΤΟΜΑΤΩΝ: ΕΙΣΑΓΩΓΗ Ι
Λεκτική Ανάλυση (lexical analysis)
Διαδικασία ανάπτυξης Προσδιορισμός απαιτήσεων Αρχιτεκτονικός Σχεδιασμός Λεπτομερής Σχεδιασμός Κωδικοποίηση Έλεγχος Παράδοση Συστήματος Λειτουργία - Συντήρηση.
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002 Κ. Μουρλάς, Λέκτορας Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
ΗΥ302 Διδακτική της Πληροφορικής Η γλώσσα προγραμματισμού LOGO Writer Ομάδα Εργασία: Αλεβίζου Βασιλική (Α.Μ.:1029) Κοφφινά Ιωάννα (Α.Μ.:1035) Τριανταφυλλίδου.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Σχεδίαση Αλγορίθμων. Διεργασίες (1/2) Μία διεργασία αλληλεπιδρά με το περιβάλλον της δεχόμενη είσοδο και παράγοντας έξοδο.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
Μηχανές Turing και Υπολογισιμότητα
ΝΤΕΝΤΕΡΜΙΝΙΣΤΙΚΑ ΠΕΠΕΡΑΣΜΕΝΑ ΑΥΤΟΜΑΤΑ Ι
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
Αλγόριθμοι 2.1.1,
ΣΑ από κάτω-προς-τα-πάνω
Θεωρία Υπολογισμού Εισαγωγή (μέρος 3 ο ). Χρειαζόμαστε Μοντέλα Εμπρός πατάκι Πίσω πατάκι Πόρτα ΚλειστόΑνοιχτό.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
1.5 Γλώσσες Προγραμματισμού
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
Θεωρία Υπολογισμού Πεπερασμένα Αυτόματα. Υπολογισμοί Γλώσσα που αποδέχεται ένας υπολογιστής: Το σύνολο των λέξεων τα οποία οδηγούν σε κατάσταση αποδοχής.
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Θεωρία Υπολογισμού Αντιαιτιοκρατικά Πεπερασμένα Αυτόματα.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Θεωρία Υπολογισμού Ασυμφραστικές Γλώσσες Λήμμα της Άντλησης.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Περιεχόμενα Μαθήματος
Θεωρία Υπολογισμού Αλγόριθμοι και Μηχανές Turing Υπολογισιμότητα.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Κεφάλαιο 10 – Υποπρογράμματα
Θεώρημα Διαγνωσιμότητας
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
Διαγνώσιμες και μη-διαγνώσιμες ασυμφραστικές γραμματικές και γλώσσες
Βασικά στοιχεία της Java
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Τμ.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Θεωρία Υπολογισμού Λήμμα της Άντλησης -Παραδείγματα.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
ΚΕΦΑΛΑΙΟ ΑΛΓΟΡΙΘΜΟΙ Αλγόριθμος Η έννοια του αλγορίθμου δεν συνδέεται αποκλειστικά και μόνο με προβλήματα της Πληροφορικής. Πχ συνταγή.
Θεωρία υπολογισμού1 Μη αιτιοκρατικό αυτόματο Σ={0}, L = { 0 k : k=2m, k=3m}, μαντεύουμε το μήκος.
Μοντελοποίηση υπολογισμού
Κεφάλαιο 4 :: Σημασιολογική Ανάλυση
Λήμμα άντλησης Πως αποφασίζουμε αποδεικνύουμε ότι μία γλώσσα δεν είναι κανονική; Δυσκολότερο από την απόδειξη ότι μια γλώσσα είναι κανονική. Γενικότερο.
Ισοδυναμία ΠΑ - ΚΕ Για να δείξουμε ότι οι κανονικές γλώσσες - εκφράσεις και τα πεπερασμένα αυτόματα είναι ισοδύναμα σε εκφραστική δυνατότητα έχουμε να.
Ενότητα 8 : Αυτόματα NFA - DFA Αλέξανδρος Τζάλλας
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Ισοδυναμία ΜΠΑ με ΠΑ Για κάθε ΜΠΑ Μ υπάρχει αλγόριθμος ο οποίος κατασκευάζει ΠΑ Μ’ αιτιοκρατικό ώστε να αναγνωρίζουν την ίδια ακριβώς γλώσσα. Καθώς το.
ΑΛΓΟΡΙΘΜΟΣ.
Προσομοίωση σφαλμάτων
Βασικές έννοιες αλγορίθμων
Εισαγωγή στις Αρχές της Επιστήμης των Η/Υ
ΠΛΗΡΟΦΟΡΙΚΗ Γ΄ Γυμνασίου Α΄ Τρίμηνο
ΗΜΥ-210: Λογικός Σχεδιασμός Εαρινό Εξάμηνο 2005
UNIT 1 Τα Πρώτα Προγράμματα.
Μεταγράφημα παρουσίασης:

Γλώσσες Προγραμματισμού Μεταγλωττιστές Λεκτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου

Δομή ▪Πεπερασμένα Αυτόματα Ντετερμινιστικά Πεπερασμένα Αυτόματα Μη-Ντετερμινιστικά Πεπερασμένα Αυτόματα Μη-Ντετερμινιστικά Πεπερασμένα Αυτόματα με Μηδενικές Μεταβάσεις Αναγωγές Αυτομάτων και Γραμματικών. ▪Υλοποίηση Λεκτικών Αναλυτών Προβλήματα Προσομοίωση ΠΑ Διαγράμματα Μετάβασης Σφάλματα

Πεπερασμένα Αυτόματα ▪Αφηρημένες μηχανές που μπορούν να χρησιμοποιηθούν σαν “αναγνωριστές” σε κανονικές γλώσσες. Ντετερμινιστικά Πεπερασμένα Αυτόματα (ΝΠΑ) Μη-Ντετερμινιστικά Πεπερασμένα Αυτόματα (ΜΠΑ) Μη-Ντετερμινιστικά Πεπερασμένα Αυτόματα με μηδενικές Μεταβάσεις (ΜΠΑ-ε) ▪Όλα τα παραπάνω είναι ισοδύναμα από πλευράς υπολογιστικής ικανότητας.

Ντετερμινιστικά Πεπερασμένα Αυτόματα ▪Αποτελούνται από Πεπερασμένο σύνολο καταστάσεων Q Σύνολο συμβόλων εισόδου (αλφάβητο) Σ Συνάρτηση μετάβασης δ η οποία ορίζει για κάθε κατάσταση q i και σύμβολο a  Σ μια νέα κατάσταση q j  Q Αρχική κατάσταση q 0 Τελικές καταστάσεις F  Q

Λειτουργία του ΝΠΑ ▪Αρχικά το αυτόματο "βρίσκεται" στην αρχική κατάσταση. ▪Το αυτόματο δέχεται σύμβολα από την συμβολοσειρά εισόδου και ανάλογα με το σύμβολο μεταβαίνει στην κατάσταση που ορίζεται από την συνάρτηση μετάβασης. ▪Αφού "καταναλωθεί" η συμβολοσειρά αν το αυτόματο βρίσκεται σε μια από τις τελικές καταστάσεις τότε αναγνωρίζει τη συμβολοσειρά. Διαφορετικά τη απορρίπτει.

Παράδειγμα ▪Αλφάβητο Σ = {a,b} ▪Καταστάσεις Q = {0,1,2,3} ▪Συνάρτηση Μετάβασης δ(0,a)=1δ(0,b)=2 δ(1,a)=1δ(1,b)=3 δ(2,a)=2 δ(2,b)=2 δ(3,a)=2 δ(3,b)=3 ▪Τελικές Καταστάσεις F = {3}

Διαγραμματική Αναπαράσταση (Γράφος Μετάβασης) 01 2 a b b a a b 3 b a ab

Διαγραμματική Αναπαράσταση (Γράφος Μετάβασης) 01 2 a b b a a b 3 b a ▪'Αλλες Συμβολοσειρές που αναγνωρίζει; abb, aabb aaaabbbbb ▪Κανονική Έκφραση a+b+ aa*bb*

Αυστηρός Ορισμός της Λειτουργίας του ΝΠΑ ▪Συνάρτηση δ*(q,σ), όπου σ μια συμβολοσειρά. δ*(q,ε)=q δ*(q,σ'a)= δ(δ*(q,σ'),a)

Κατάσταση Παγίδευσης 01 2 a b b a a b 3 b a ▪Κατάσταση στην οποία καμιά συμβολοσειρά δεν οδηγεί σε τελική κατάσταση.

Αναγνώριση μιας Συμβολοσειράς από ένα ΝΠΑ t h e n ▪Έτσι για παράδειγμα η συμβολοσειρά "then" μπορεί να αναγνωριστεί από το αυτόματο:

Μη-Ντετερμινιστικά Πεπερασμένα Αυτόματα ▪Είναι δυνατό από μια κατάσταση να υπάρχουν περισσότερες από μια μεταβάσεις για το ίδιο σύμβολο εισόδου. ▪Σε ποια κατάσταση θα βρεθεί το αυτόματο; ▪Μη-Ντετερμινισμός! δ(0,a) = {0,1} 01 a a

Μη-Ντετερμινιστικά Πεπερασμένα Αυτόματα ▪Αποτελούνται από: Πεπερασμένο σύνολο καταστάσεων Q Σύνολο συμβόλων εισόδου (αλφάβητο) Σ Συνάρτηση μετάβασης δ η οποία ορίζει για κάθε κατάσταση q i και σύμβολο a  Σ ένα σύνολο καταστάσεων Q j  P(Q). Αρχική κατάσταση q 0 Τελικές καταστάσεις F  Q ▪Στην περίπτωση αυτή το αυτόματο αναγνωρίζει τη συμβολοσειρά αν υπάρχει τουλάχιστον ένα μονοπάτι εκτέλεσης που να οδηγεί σε μια τελική κατάσταση.

Παράδειγμα ΜΠΑ (i) ▪Τι αναγνωρίζει το ακόλουθο αυτόματο; abb abababb ababbaabbabaabb 012 a b b a 3 b

Παράδειγμα ΜΠΑ (ii) ▪Κανονική Έκφραση (a|b)*abb 012 a b b a 3 b

Αυστηρός Ορισμός της Λειτουργίας του ΜΠΑ ▪Συνάρτηση δ*(q,σ), όπου σ μια συμβολοσειρά. ▪Ορίζεται η συνάρτηση δ‾ για σύνολα καταστάσεων: δ‾(R,a) =  q  R δ(q,a) ▪Η λειτουργία του αυτομάτου ορίζεται ως δ*(q,ε)={q} δ*(q,σ'a)=δ‾(δ*(q,σ'),a)

Μη-Ντετερμινιστικά ΠΑ με Μηδενικές Μεταβάσεις ▪Μη-ντετερμινιστικά αυτόματα με "αυθόρμητες" μεταβάσεις Κενή συμβολοσειρά μέρος του αλφάβητου που δέχεται το αυτόματο. "Αυθόρμητη μετάβαση": Μετάβαση σε μια κατάσταση με βάση την κενή συμβολοσειρά [δ(q,ε)] 01 a a 2 ε

Μη-Ντετερμινιστικά ΠΑ με Μηδενικές Μεταβάσεις ▪Αποτελούνται από: Πεπερασμένο σύνολο καταστάσεων Q Σύνολο συμβόλων εισόδου (αλφάβητο) Σ Συνάρτηση μετάβασης δ η οποία ορίζει για κάθε κατάσταση q i και σύμβολο a  Σ  {ε} ένα σύνολο καταστάσεων Q j  P(Q). Αρχική κατάσταση q 0 Τελικές καταστάσεις F  Q ▪Οι μεταβάσεις μπορούν να γίνουν με 2 τρόπους: Σαν "κανονικό" ΜΠΑ Αυθόρμητα από μια μετάβαση που ορίζεται από δ(q i,ε)

Παράδειγμα ΜΠΑ-ε 12 a b b a 0 56 a ε b 8 b ε ε ε ▪(aa|bb)(a|b)*b

ε-Κλείσιμο ▪Ορίζεται ως ε-κλείσιμο(q i ) το σύνολο των καταστάσεων οι οποίες είναι προσβάσιμες από την κατάσταση q i μόνο με ε- μεταβάσεις. ▪Αναδρομικά ορίζεται ως ε-κλείσιμο 0 (R) = R ε-κλείσιμο n+1 (R) =  {δ(q,ε) | q  ε-κλείσιμο n (R)} ε-κλείσιμο(R) =   {ε-κλείσιμο n (R)} ▪όπου R ένα σύνολο καταστάσεων του αυτομάτου.

Παράδειγμα ε-κλείσιμο(0) 12 a b b a 0 56 a ε b 8 b ε ε ε ▪ε-κλείσιμο(0) = {1,5,7,4} ε

Αυστηρός Ορισμός της Λειτουργίας του ΜΠΑ-ε ▪Συνάρτηση δ*(q,σ), όπου σ μια συμβολοσειρά. ▪Δεδομένου ότι η συνάρτηση δ‾ είναι: δ‾(R,a) =  q  R δ(q,a) ▪Η λειτουργία του αυτομάτου ορίζεται ως δ*(q,ε) = ε-κλείσιμο({q}) δ*(q,σ'a) = ε-κλεισιμο(δ‾(δ*(q,σ'),a))

Γλώσσες Προγραμματισμού Μεταγλωττιστές Αναγωγές Πεπερασμένων Αυτομάτων, Κανονικών Γραμματικών και Κανονικών Εκφράσεων

Αναγωγές ▪Είναι δυνατό να γίνουν οι ακόλουθες αναγωγές Από μια κανονική γραμματική σε ένα ΜΠΑ-ε Από ένα ΜΠΑ-ε σε κανονική γραμματική Από μια κανονική έκφραση σε ΜΠΑ-ε Από ΜΠΑ-ε σε κανονική έκφραση ▪Ενδιαφέρον στην κατασκευή μεταγλωττιστών έχουν οι αναγωγές σε ΜΠΑ-ε από κανονικές εκφράσεις και κανονικές γραμματικές.

Αναγωγή Κανονικής Γραμματικής σε ΜΠΑ-ε ▪Έστω μια γραμματική G=(T,N,P,S). Το αντίστοιχο ΜΠΑ-ε (Σ,Q,δ,F) θα έχει: Σ = Τ, το αλφάβητο του ΜΠΑ-ε είναι το αλφάβητο της γραμματικής Q = Ν  {q f }, οι καταστάσεις του ΜΠΑ-ε είναι τα μη-τερματικά σύμβολα της γραμματικής, επαυξημένα με μια ακόμη κατάσταση που είναι η τελική. Για κάθε κανόνα Α  aΒ δ(Α,a)=B Α  a δ(Α,a)=q f A  ε δ(Α,ε)=q f F = {q f }, τελική κατάσταση του αυτομάτου.

Παράδειγμα Αναγωγής σε ΜΠΑ-ε ▪Έστω η γραμματική Τ = {a,b} N = {I,S,U} P = {I  aS,S  bU U  ε S  aS, S  bS U  b} S = I ΙS a a b b U b ε qfqf

Αναγωγή ΚΕ σε ΜΠΑ-ε ▪Η αναγωγή γίνεται αναδρομικά με κατάλληλη σύνθεση των ΜΠΑ-ε που αντιστοιχούν σε υπο-εκφράσεις της αρχικής. ▪Στα επόμενα το Μ(r) είναι το ΜΠΑ-ε που αντιστοιχεί στην έκφραση r.

Αναγωγές (i) ▪Κενή συμβολοσειρά ε παράγεται από το αυτόματο Μ(ε): ▪Κανονική έκφραση που περιέχει ένα σύμβολο a του αλφαβήτου, από το αυτόματο Μ(a): a tqfqf ε qfqf

Αναγωγές (ii) ▪Συμβολοσειρά rs, όπου κάθε υποέκφραση παράγεται από τα αυτόματα Μ(r) και Μ(s) αντίστοιχα, παράγεται από το αυτόματο Μ(rs): t2t2 q f2 ε M(r) t1t1 q f1 M(s) t2t2 q f2 M(r) t1t1 M(s)

Αναγωγές (iii) ▪Συμβολοσειρά r|s, όπου κάθε υποέκφραση παράγεται από τα αυτόματα Μ(r) και Μ(s) αντίστοιχα, παράγεται από το αυτόματο Μ(r|s): t2t2 q f2 ε M(r) t1t1 q f1 M(s) qfqf t ε ε ε

Αναγωγές (iv) ▪Συμβολοσειρά r*, όπου κάθε υποέκφραση παράγεται από τα αυτόματα Μ(r) και Μ(s) αντίστοιχα, παράγεται από το αυτόματο Μ(r*): M(r) t1t1 q f1 qfqf t ε ε ε

Παράδειγμα Αναγωγής ΚΕ σε ΜΠΑ-ε ▪Κανονική Έκφραση α(α|β)*β a b a ε b ε ε ε ε ε ε ε

Υλοποίηση ΝΠΑ; ▪Πρόγραμμα το οποίο υλοποιεί το πεπερασμένο αυτόματο. s=s0; c = nextChar(); while (c!=EOF){ s = move(s,c); c = nextChar();} if (s is in F) return "yes"; else return "no";

Μη-Ντετερμινιστικά ΠΑ ▪Υπάρχει πρόγραμμα που υλοποιεί MΠΑ, όμως η πολυπλοκότητα του είναι μεγάλη. ▪Άρα Μετατροπή των ΜΠΑ και ΜΠΑ-ε σε ΝΠΑ. ▪Βασική ιδέα Εφόσον σε κάθε μετάβαση ένα ΜΠΑ μπορεί να είναι σε ένα σύνολο καταστάσεων, το αντίστοιχο ΝΠΑ έχει σαν καταστάσεις σύνολα καταστάσεων του ΜΠΑ. Ομαδοποίηση καταστάσεων ΜΠΑ σε μια νέα Κατάσταση.

Ορισμός Μετατροπής ▪Έστω ΜΠΑ-ε και (Σ,Q,δ,q 0,F). ▪Το αντίστοιχο ΝΠΑ (Σ',Q',δ',q' 0,F') έχει: Σ' = Σ Q' = P(Q), το δυναμοσύνολο των καταστάσεων Q δ'(q',a) = ε-κλείσιμο(δ‾(q',a)), 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) forall a  Σ q'' := e-closure(δ ‾ (q',a)) δ'(q',a) := 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 είναι τελικές ή μη τελικές κατάστασεις (ισοδύναμες)} repeat forall (q i,q j ) of S forall a in Σ q' i = δ(q i,a) q' j = δ(q j,a) 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

Υλοποίηση Λεκτικών Αναλυτών

Υλοποίηση ΛΑ (Ι) ▪Άρα η υλοποίηση του λεκτικού αναλυτή αφορά την σχεδίαση των ΜΠΑ-ε που αντιστοιχούν σε κάθε λεκτική μονάδα. ▪Συνδυασμός των ΜΠΑ-ε σε ένα, Τα ΜΠΑ-ε ενώνονται σε ένα ΜΠΑ-ε με μηδενικές μεταβάσεις από μια νέα αρχική κατάσταση στις αρχικές καταστάσεις των ΜΠΑ-ε για κάθε λεκτική μονάδα. e n i ε t ε h f

Υλοποίηση ΛΑ (ΙΙ) ▪Πρόβλημα: Οι λεκτικές μονάδες είναι μέρος μιας μεγάλης συμβολοσειράς εισόδου. Αναγνώριση προθέματος χωρίς να είναι γνωστό το τέλος της. Παράδειγμα: Αναγνώριση των λεκτικών ">" "=" ">=" ▪Επισκόπηση επιπλέον χαρακτήρων και κατάλληλη οπισθοδρόμηση. Ορισμένοι χαρακτήρες "διαβάζονται" περισσότερες από μια φορές. ▪Αναγνώριση της συμβολοσειράς με το μεγαλύτερο μήκος.

Παράδειγμα > > = = ε 0 ε ε

Λειτουργία ▪Σύνολο S που περιλαμβάνει αρχικά τις καταστάσεις ε- κλείσιμο(q 0 ). ▪Ανάγνωση συμβόλου σ από την είσοδο και δημιουργία συνόλου S' από τις καταστάσεις για τις οποίες υπάρχει μετάβαση για το σ από τις καταστάσεις του S. ▪Παραπάνω διαδικασία γίνεται έως ότου να μην υπάρχουν άλλες μεταβάσεις, δηλαδή S' = {}. ▪Το πλέον πρόσφατο σύνολο με μια τελική κατάσταση ονομάζεται επιτυχημένο σύνολο. Η λεκτική μονάδα αυτής της κατάστασης επιστρέφεται. ▪Το αυτόματο οπισθοδρομεί τόσους χαρακτήρες όσους έπονται από το επιτυχημένο σύνολο.

Παράδειγμα ▪Αναγνώριση της >=8 > > = 3 5 = ε 0 ε ε > =8

Υλοποίηση με ΝΠΑ ▪Δημιουργούμε το συνολικό ΜΠΑ-ε. ▪Μετατροπή σε ΝΠΑ, διαγραφή απρόσιτων καταστάσεων και ελαχιστοποίηση. ▪Προσομοιώνουμε το αυτόματο μέχρι να έλθει σε ένα σημείο για το οποίο δεν υπάρχει μετάβαση. ▪Οπισθοδρομούμε μέχρι να φτάσουμε σε μια απο τις τελικές καταστάσεις του ΝΠΑ, όπου γίνονται οι ενέργειες που σχετίζονται με αυτή.

Γλώσσες Προγραμματισμού Μεταγλωττιστές Διαγράμματα Μετάβασης

▪Τροποποιημένα ΝΠΑ που απεικονίζουν εύγλωττα τις λειτουργίες του Λεκτικού Αναλυτή. ▪Διαφορές ΔΜ και ΝΠΑ Από τις τελικές καταστάσεις δεν υπάρχουν μεταβάσεις. Σε κάθε τελική κατάσταση αντιστοιχεί κωδικός εξόδου, μοναδικός για κάθε λεκτική μονάδα. Στις τελικές καταστάσεις σημειώνονται ο αριθμός των συμβόλων (n) που πρέπει να οπισθοδρομήσει το αυτόματο, με το συμβολισμό *n. ▪Κατασκευή με εμπειρικό τρόπο (συνήθως)

Κατασκευή ΔΜ ▪Για κάθε ομάδα λεκτικών κατασκευάζεται το ΝΠΑ και τον αντίστοιχο γράφο μετάβασης. ▪Συμπληρώνεται ο γράφος μετάβασης ώστε να προκύψει το ΔΜ. ▪Συνδυάζονται τα ΔΜ ώστε να προκύψει το συνολικό ΔΜ του λεκτικού αναλυτή.

Παράδειγμα (1) L 1 2 Γράφοι Μετάβασης Αναγνωριστικών όχι L/D Διάγραμμα Μετάβασης (Τ_ID) * L D L 1 3 L D 2

Παράδειγμα (2) > > 12 4 = 3 5 Γράφοι Μετάβασης όχι = > 0 1 = 2 3 Διάγραμμα Μετάβασης (Τ_GE) (Τ_GT) *

Ανάνηψη από Σφάλματα ▪Εντοπισμός σχετικά μικρού αριθμού σφαλμάτων λόγω της περιορισμένης οπτικής. ▪Έστω το ακόλουθο: whille (x>0) {..} ▪Στρατηγικές ανάνηψης: Μέθοδος πανικού (panic mode): Διαγραφή συμβόλων μέχρι να βρεθεί κατάλληλο πρόθεμα. Διαγραφή/εισαγωγή/αντικατάσταση χαρακτήρα. Αντιμετάθεση δύο χαρακτήρων.

Σύνοψη ▪Πεπερασμένα Αυτόματα Ντετερμινιστικά Πεπερασμένα Αυτόματα Μη-Ντετερμινιστικά Πεπερασμένα Αυτόματα Μη-Ντετερμινιστικά Πεπερασμένα Αυτόματα με Μηδενικές Μεταβάσεις Αναγωγές Αυτομάτων και Γραμματικών. ▪Υλοποίηση Λεκτικών Αναλυτών Προβλήματα Προσομοίωση ΠΑ Διαγράμματα Μετάβασης Σφάλματα