ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ.1 Μεταγλωττιστές Μεταγλωττιστής είναι το λογισμικό, που ως σκοπό έχει τη μετάφραση ενός προγράμματος από μία γλώσσα σε μία άλλη. Γιατί ασχολούμαστε με τη μελέτη της δομής και των τεχνικών ανάπτυξης μεταγλωττιστών; κατανόηση του τρόπου λειτουργίας τους και καλύτερη αξιοποίηση των δυνατοτήτων τους δυνατότητα δημιουργίας νέων γλωσσών (προγραμματισμού, σεναρίων, εντολών κ.α.) ή απλών λειτουργιών αναγνώρισης συμβολοσειρών και αυτοματοποιημένης επεξεργασίας κειμένου εξοικείωση με τεχνικές αναπαράστασης δεδομένων σε επίπεδο μηχανής
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η δομή του μεταγλωττιστή
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η δομή του μεταγλωττιστή
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία μεταγλώττισης
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία μεταγλώττισης Μεταγλωττιστές απλής σάρωσης πολλαπλής σάρωσης Διαχείριση λαθών λεξικών συντακτικών σημασιολογικών
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία μεταγλώττισης Λεξική ανάλυση Ο στόχος της είναι ο διαχωρισμός των χαρακτήρων του πηγαίου προγράμματος σε ομάδες, με συγκεκριμένη σημασία, σύμφωνη με τον ορισμό της πηγαίας γλώσσας. Οι ομάδες αυτές των χαρακτήρων ονομάζονται λεξικές μονάδες. Παράδειγμα i=i+2*a iόνομα =τελεστής= iόνομα +τελεστής + 2αριθμός *τελεστής * aόνομα
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία μεταγλώττισης Συντακτική ανάλυση Δέχεται ως είσοδο τις λεξικές μονάδες, που παράγονται κατά τη λεξική ανάλυση και προσπαθεί να ανιχνεύσει τη δομή του προγράμματος. Ως αποτέλεσμα της συντακτικής ανάλυσης παράγεται μία δομή, που ανάλογα με τη μορφή της αποκαλείται είτε παράγωγο, είτε συντακτικό δένδρο.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία μεταγλώττισης Σημασιολογική ανάλυση Η σημασία ενός προγράμματος καθορίζει τη συμπεριφορά του κατά την εκτέλεση: στατική σημασία δυναμική σημασία
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία μεταγλώττισης Βελτιστοποίηση πηγαίου προγράμματος Έπεται της σημασιολογικής ανάλυσης και μπορεί να ενσωματώσει βελτιστοποιήσεις στο παραγόμενο δένδρο ή σε μία γραμμική αναπαράσταση αυτού γνωστή με τον όρο κώδικας τριών διευθύνσεων. Το παραγόμενο δένδρο και ο κώδικας τριών διευθύνσεων είναι εναλλακτικές μορφές ενδιάμεσου κώδικα ή ενδιάμεσης αναπαράστασης. Περιπτώσεις βελτιστοποιήσεων: σύμπτυξη σταθερών διάδοση εντολών εκχώρησης τιμής στο υπόλοιπο πρόγραμμα απομάκρυνση των μη προσιτών τμημάτων κώδικα μετακίνηση κώδικα έξω από βρόχους επανάληψης κ.α.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία μεταγλώττισης Σύνθεση τελικού προγράμματος Στη φάση αυτή χρησιμοποιείται η ενδιάμεση αναπαράσταση του πηγαίου προγράμματος, για τη δημιουργία κώδικα, σημασιολογικά ίδιου με τον πηγαίο, στη γλώσσα-στόχο. Ο κώδικας αυτός μπορεί να δημιουργηθεί για ένα συγκεκριμένο επεξεργαστή ή για κάποια ιδεατή μηχανή με χαρακτηριστικά συμβατικού επεξεργαστή. Βελτιστοποίηση τελικού προγράμματος Οι εναλλακτικές δυνατότητες βελτίωσης του παραγόμενου κώδικα εξαρτώνται πάντα από τον επεξεργαστή, για τον οποίο δημιουργείται το πρόγραμμα. Εξαρτώνται π.χ. Από το πλήθος και την εξειδίκευση των καταχωρητών του επεξεργαστή, τις μορφές προσπέλασης στη μνήμη και τις εντολές που διαθέτει.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λειτουργία μεταγλωττιστών Άλλα προγράμματα διερμηνευτές συμβολομεταφραστές διασυνδέτες προεπεξεργαστές συντάκτες/διορθωτές ανιχνευτές λαθών καταγραφείς προγράμματα διαχείρισης έργου
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λειτουργία μεταγλωττιστών
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Ανάπτυξη μεταγλωττιστών Διαγράμματα σχήματος T: Σύνθεση διαγραμμάτων σχήματος T:
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Ανάπτυξη μεταγλωττιστών Αυτοδύναμη ανάπτυξη (bootstrapping):
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Ανάπτυξη μεταγλωττιστών Μεταφορά μεταγλωττιστή αυτοδύναμης ανάπτυξης σε νέα γλώσσα στόχο:
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ.16 2 Λεξική Ανάλυση Στη φάση της λεξικής ανάλυσης ο μεταγλωττιστής δέχεται το πηγαίο πρόγραμμα ως μία ροή χαρακτήρων προερχόμενη από κάποιο αρχείο και αναγνωρίζει ομάδες χαρακτήρων, που η κάθε μία αποτελεί μία στοιχειώδη μονάδα πληροφορίας, από αυτές που περιλαμβάνονται στον ορισμό της πηγαίας γλώσσας. Οι μονάδες αυτές ονομάζονται λεξικές μονάδες. Παραδείγματα δεσμευμένες λέξεις ( if, while κ.α.) oνόματα (identifiers) – συμβολοσειρές οριζόμενες από το χρήστη ειδικά σύμβολα ( +, -,>=,<= κ.α.)
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία της λεξικής ανάλυσης Οι διάφορες περιπτώσεις λεξικών μονάδων δηλώνονται σε ένα μεταγλωττιστή, είτε μέσω κάποιου τύπου απαρίθμησης, είτε μέσω της αντιστοίχησης αυτών σε συμβολικές αριθμητικές τιμές, όπως παρακάτω: #define IF 256 #define THEN 257 #define ELSE Σε κάθε λεξική μονάδα αντιστοιχεί τελικά κάποιο αναγνωριστικό ( IF,ΤΗΕΝ,ELSE κ.λ.π.), που δε θα πρέπει να συγχέεται με αυτή καθαυτή τη λεξική μονάδα, η οποία ουσιαστικά ταυτίζεται με τη συμβολοσειρά, που αναγνωρίστηκε.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία της λεξικής ανάλυσης Παραδείγματα: Λ.Μ.Πρότυπα αναγνώρισηςΑναγνωριστικά + χαρακτήρας ‘+’ PLUS a1 συμβολοσειρά που αρχίζει με χαρακτήρα ID IF οι χαρακτήρες ‘I’ και ‘F’ IF 1729 συμβολοσειρά με δεκαδικά ψηφία NUMBER Οι λεξικές μονάδες διακρίνονται σε κατηγορίες όπως οι δεσμευμένες λέξεις ή λέξεις-κλειδιά, τα ειδικά σύμβολα, στα οποία περιλαμβάνονται οι τελεστές και οι διαχωριστές (‘;’, σχόλιο κ.α.), τα ονόματα, οι αριθμητικές σταθερές κ.α. Όταν σε ένα πρότυπο αναγνώρισης μιας λεξικής μονάδας αντιστοιχούν περισσότερες από μία πιθανές συμβολοσειρές, επιβάλλεται εκτός από το αναγνωριστικό να συλλέγονται επίσης πληροφορίες για αυτή καθαυτή τη λεξική μονάδα. Οι πληροφορίες αυτές ονομάζονται ιδιότητες.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία της λεξικής ανάλυσης Για τα ονόματα εκτός από το αναγνωριστικό διαβιβάζεται στα υπόλοιπα τμήματα του μεταγλωττιστή και η ίδια η συμβολοσειρά της λεξικής μονάδας. Στην περίπτωση αριθμητικών σταθερών προηγείται συνήθως η μετατροπή της συμβολοσειράς σε αριθμητική τιμή, που αποθηκεύεται ως ιδιότητα της συγκεκριμένης μονάδας. union {int yint; char ystr[81]; struct AstNode_tag *stnode;} Η μετατροπή της ροής χαρακτήρων του πηγαίου προγράμματος σε ροή λεξικών μονάδων δε γίνεται με τη μία, για όλο το πρόγραμμα. Ο λεξικός αναλυτής λειτουργεί κάτω από τον έλεγχο του συντακτικού αναλυτή, επιστρέφοντας συνήθως κάθε φορά μία μόνο από τις επόμενες λεξικές μονάδες, μετά από κλήση της συνάρτησης, int yylex(void);
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Η διαδικασία της λεξικής ανάλυσης Η συνάρτηση λεξικής ανάλυσης υπάρχει πιθανότητα να έχει παραχθεί αυτόματα από το εργαλείο flex, με βάση την οριζόμενη από τον κατασκευαστή περιγραφή του λεξικού αναλυτή. Είναι χαρακτηριστικό ότι η ροή των χαρακτήρων του πηγαίου προγράμματος δε δηλώνεται ως παράμετρος της συνάρτησης yylex().
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις Μία κανονική έκφραση r ορίζει ένα πρότυπο αναγνώρισης συμβολοσειρών. Το σύνολο των συμβολοσειρών, που εκφράζονται από το συγκεκριμένο πρότυπο, λέμε ότι αποτελεί τη γλώσσα L(r) της έκφρασης. Μία γλώσσα εξαρτάται πριν από όλα από το σύνολο των διαθέσιμων χαρακτήρων, που ονομάζεται αλφάβητο Σ της έκφρασης. Μία κανονική έκφραση r μπορεί να περιέχει χαρακτήρες με ειδική σημασία. Οι χαρακτήρες αυτοί αποκαλούνται μεταχαρακτήρες ή μετασύμβολα και μπορεί είτε να ανήκουν, είτε να μην ανήκουν στο αλφάβητο της κανονικής έκφρασης.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις Όταν θέλουμε να αποσαφηνίσουμε τη χρήση ενός χαρακτήρα ως πρότυπο και όχι ως μεταχαρακτήρα, τότε αν η ακολουθία των χαρακτήρων-πρότυπο δεν περικλείεται σε “ ”, χρησιμοποιούμε το χαρακτήρα διαφυγής \. Ο ορισμός μιας κανονικής έκφρασης αποσκοπεί στην περιγραφή της γλώσσας L(r) αυτής. Λέμε ότι ο χαρακτήρας c ταιριάζει ή συμμορφώνεται στην κανονική έκφραση c και αυτό γράφεται ως L(c)={c} Ισχύει επίσης L(ε)={ε}, όπου με ε συμβολίζουμε την κενή συμβολοσειρά. Πράξεις μεταξύ κανονικών εκφράσεων: επανάληψη, διάζευξη και παράθεση.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις Προτεραιότητα πράξεων: επανάληψη – παράθεση – διάζευξη Δυνατότητα χρήσης παρενθέσεων Διάζευξη δύο εκφράσεων r και s, είναι η κανονική έκφραση r|s στην οποία συμμορφώνεται κάθε συμβολοσειρά, που είτε ταιριάζει στην r, είτε στην s. Παράθεση δύο εκφράσεων r και s, είναι η κανονική έκφραση rs και σε αυτή συμμορφώνεται κάθε συμβολοσειρά, που προκύπτει ως συνένωση δύο συμβολοσειρών, με την πρώτη να ταιριάζει στην r και τη δεύτερη στην s. Παραδείγματα:η συμβολοσειρά xy ταιριάζει στην xy οι xz και yz ταιριάζει στην (x|y)z
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις Επανάληψη μιας κανονικής έκφρασης r* είναι το σύνολο των συμβολοσειρών που προκύπτουν ως πεπερασμένη παράθεση συμβολοσειρών, που η κάθε μία ταιριάζει στην r. Παραδείγματα: στην g* συμμορφώνονται οι ε,g,gg,ggg,…, στην (x|yy)* συμμορφώνονται οι ε,x,yy,xx,xyy,yyx,yyyy,…. Κανονικοί ορισμοί: χρήση συμβολικών ονομάτων Παράδειγμα: ψηφίο=0|1|2...|9 κανονική έκφραση ακεραίων: {ψηφίο}{ψηφίο}*
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις Άλλα μετασύμβολα:
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις Κανονικές εκφράσεις για αριθμητικές σταθερές: φυσικός = [0-9]+ ακέραιος = (+ | -)?{φυσικός} αριθμός = {ακέραιος}(“.” {φυσικός}) ? (E {ακέραιος})? Κανονικές εκφράσεις για δεσμευμένες λέξεις & ονόματα: δεσμευμένη = if | while | do |... γράμμα = [a-zA-Z] ψηφίο = [0-9] όνομα = {γράμμα}({γράμμα} | {ψηφίο})*
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις Κανονική έκφραση για αναγνώριση σχολίων (δεν είναι πάντα εφικτή): {Σχόλιο σε πρόγραμμα Pascal} {( [^}] )*} Για τα σχόλια στη C (κώδικας στο flex): "/*"{ register int c; for(;;) { while( ((c=input()) != '*') && (c != EOF) ); if(c == '*') { while( (c=input()) == '*'); if(c == '/') break;} if(c == EOF) { printf("End-of-File in comment\n"); break;}}}
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις ΑΣΑΦΕΙΕΣ: Οι συμβολοσειρές if και while μπορεί σύμφωνα με την περιγραφή, που δίνεται από ένα σύνολο κανονικών εκφράσεων, εκτός από λέξεις- κλειδιά να είναι και ονόματα. Τι γίνεται με τη συμβολοσειρά <> ; Είναι μία λεξική μονάδα ή δύο; ΤΡΟΠΟΣ ΑΝΤΙΜΕΤΩΠΙΣΗΣ: Οι δύο κανόνες, που συνήθως εφαρμόζονται στις περιπτώσεις ασάφειας, που αναφέρθηκαν, έχουν ως εξής: ·- Όταν μία συμβολοσειρά μπορεί να ερμηνευθεί είτε ως όνομα, είτε ως λέξη κλειδί, προτιμάται η δεύτερη ερμηνεία. Αυτή είναι εξάλλου και η έννοια του όρου δεσμευμένη λέξη, που χρησιμοποιείται επίσης αρκετά συχνά. - Όταν μία συμβολοσειρά μπορεί να ερμηνευθεί, είτε ως μία μόνο λεξική μονάδα, είτε ως μία σειρά λεξικών μονάδων, προτιμάται η πρώτη ερμηνεία. Η προσέγγιση αυτή ονομάζεται αρχή της ταύτισης με τη μονάδα του μεγαλύτερου δυνατού μήκους.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις ΑΣΑΦΕΙΕΣ: Η γεννήτρια flex παράγει πάντα κώδικα, που επιλέγει το ταίριασμα της κάθε συμβολοσειράς με τη λεξική μονάδα του μεγαλύτερου δυνατού μήκους. Στην περίπτωση λεξικών μονάδων του ίδιου μήκους, προτιμάται αυτή, που αναφέρεται πρώτη. ΔΙΑΧΩΡΙΣΤΕΣ: Διαχωριστές είναι οι χαρακτήρες, που δεν υπάρχει περίπτωση να αποτελούν μέρος μιας μεγαλύτερης λεξικής μονάδας. Έτσι, για παράδειγμα στη συμβολοσειρά x=y, το = διαχωρίζει το όνομα x από την υπόλοιπη συμβολοσειρά, καθώς το σύμβολο αυτό δεν μπορεί να αποτελέσει μέρος της λεξικής μονάδας κάποιου ονόματος.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Κανονικές εκφράσεις ΔΙΑΧΩΡΙΣΤΕΣ: Δεν αρκεί πάντα η αναγνώρισή του ρόλου των διαχωριστών, ως τελείωμα της τρέχουσας λεξικής μονάδας, αλλά επιβάλλεται και η αντιμετώπισή τους, ως αυτόνομες λεξικές μονάδες: - Όταν ανιχνεύεται η ύπαρξη διαχωριστή, η λεξική μονάδα αυτού πρέπει να καταστεί ξανά αναγνώσιμη στο πλαίσιο της συμβολοσειράς εισόδου. Έτσι, μετά την αναγνώριση της λεξικής μονάδας, που τελειώνει, η ανάλυση συνεχίζει με την αναγνώριση της λεξικής μονάδας του διαχωριστή. - Ο αναλυτής, πριν από την ολοκλήρωση της ανάγνωσης του διαχωριστή από τη ροή εισόδου, ελέγχει πάντα έναν ή αν χρειαστεί και περισσότερους χαρακτήρες, από αυτούς, που ακολουθούν.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Γεννήτριες λεξικών αναλυτών Για τη χρήση γεννήτριας κώδικα λεξικής ανάλυσης: Συντάσσουμε το αρχείο περιγραφής το λεξικού αναλυτή: %{ /* πρόγραμμα αρίθμησης των γραμμών ενός κειμένου */ #include int lineno = 1; %} line.*\n % {line}{printf(“%5d %s”, lineno++, yytext);} % void main() { yylex();}
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Γεννήτριες λεξικών αναλυτών Το αρχείο περιγραφής διοχετεύεται ως είσοδος στη γεννήτρια κώδικα λεξικής ανάλυσης. Ο κώδικας που προκύπτει ως αποτέλεσμα περιλαμβάνεται στο αρχείο lexyy.c ή lex.yy.c και περιλαμβάνει σίγουρα τη συνάρτηση λεξικής ανάλυσης yylex(). Αν το αρχείο περιγραφής περιλαμβάνει συνάρτηση main(), τότε το πρόγραμμα που παράχθηκε μπορεί να λειτουργήσει αυτόνομα και για να γίνει αυτό πρέπει να περάσει από ένα μεταγλωττιστή της C. Αν όχι, τότε για να χρησιμοποιηθεί ο παραγόμενος κώδικας στο πλαίσιο ενός άλλου προγράμματος (μεταγλωττιστής) χρειάζεται να συμπεριληφθεί με την οδηγία include “lexyy.c”
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Γεννήτριες λεξικών αναλυτών ΔΟΜΗ ΑΡΧΕΙΟΥ ΠΕΡΙΓΡΑΦΗΣ ΛΕΞΙΚΗΣ ΑΝΑΛΥΣΗΣ ορισμοί % κανόνες αναγνώρισης % βοηθητικές συναρτήσεις Στους ορισμούς περιλαμβάνονται: Κώδικας, ο οποίος δεν ανήκει σε συγκεκριμένες συναρτήσεις και είναι επιθυμητή η συμπερίληψή του στον παραγόμενο λεξικό αναλυτή. Ο κώδικας αυτός εμφανίζεται ανάμεσα στους ειδικούς χαρακτήρες {% και %} και προηγείται του χαρακτήρα %, που διαχωρίζει το πρώτο από το δεύτερο μέρος της περιγραφής. Ορισμοί ονομάτων κανονικών εκφράσεων. Κάθε ένα από αυτά ορίζεται σε ξεχωριστή γραμμή, όπου προηγείται το όνομα και μετά από ένα ή περισσότερα κενά ακολουθεί η κανονική έκφραση από την οποία περιγράφεται.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Γεννήτριες λεξικών αναλυτών Στο δεύτερο μέρος του αρχείου περιγραφής του λεξικού αναλυτή περιλαμβάνονται οι κανόνες αναγνώρισης διατυπωμένοι στη μορφή, p 1 {ενέργεια 1 } p 2 {ενέργεια 2 } p n {ενέργεια n } όπου κάθε p i είναι μία κανονική έκφραση και κάθε ενέργεια i είναι μία ή περισσότερες εντολές της C, που εκτελούνται, κάθε φορά, που εντοπίζεται η αντίστοιχη λεξική μονάδα. Στο τελευταίο μέρος της περιγραφής του λεξικού αναλυτή περιλαμβάνονται οι όποιες συναρτήσεις καλούνται από το δεύτερο μέρος και δεν ορίζονται αλλού. Αν θέλουμε το αποτέλεσμα της επεξεργασίας της γεννήτριας να λειτουργεί ως αυτόνομο πρόγραμμα, τότε στο μέρος αυτό περιλαμβάνεται και η συνάρτηση main().
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Γεννήτριες λεξικών αναλυτών Η εντολή return επιστρέφει στο συντακτικό αναλυτή το αναγνωριστικό της τελευταίας λεξικής μονάδας, που αναγνωρίσθηκε. Για την επιστροφή τιμών ιδιοτήτων της λεξικής μονάδας, μπορεί να χρησιμοποιηθεί η εσωτερική μεταβλητή yylval της γεννήτριας. Ακόμη, είναι ιδιαίτερα χρήσιμη και η char * yytext, όπου αποθηκεύεται προσωρινά η συμβολοσειρά της λεξικής μονάδας, που αναγνωρίσθηκε.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Γεννήτριες λεξικών αναλυτών YYTYPE yylval Η μεταβλητή μέσω της οποίας επικοινωνεί ο λεξικός αναλυτής με το συντακτικό αναλυτή. Ο προκαθορισμένος τύπος YYTYPE είναι int, αλλά ο χρήστης μπορεί να τον ορίσει σύμφωνα με τις ανάγκες του στο πρώτο μέρος της περιγραφής του λεξικού ή του συντακτικού αναλυτή. Η τιμή της μεταβλητής yylval, πρέπει να ενημερώνεται, όποτε αυτή χρειάζεται, στα τμήματα κώδικα action i του δευτέρου μέρους της περιγραφής. char * yytext Η μεταβλητή αυτή παρέχει έναν προσωρινό χώρο αποθήκευσης της συμβολοσειράς, που αντιστοιχεί στη λεξική μονάδα που αναγνωρίσθηκε. Είναι ιδιαίτερα χρήσιμη κατά την αναγνώριση ονομάτων και σταθερών. int yyleng Η τιμή της εκφράζει το μήκος της λεξικής μονάδας, που αναγνωρίσθηκε. FILE * yyin Η τιμή της παρέχει ένα δείκτη στο αρχείου εισόδου του λεξικού αναλυτή (προκαθορισμένη τιμή: stdin ). FILE * yyout Η τιμή της παρέχει ένα δείκτη στο αρχείου εξόδου του λεξικού αναλυτή (προκαθορισμένη τιμή: stdout ). int yylex() Η παραγόμενη συνάρτηση λεξικής ανάλυσης. Επιστρέφει το αναγνωριστικό της λεξικής μονάδας, που διαβάζει.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Γεννήτριες λεξικών αναλυτών register int input() Επιστρέφει τον επόμενο χαρακτήρα της συμβολοσειράς εισόδου, στο λεξικό αναλυτή. void yymore() Επιτρέπει στο λεξικό αναλυτή να προχωρήσει στην αναγνώριση της επόμενης λεξικής μονάδας, διατηρώντας στην yytext τη συμβολοσειρά της λεξικής μονάδας, που αναγνωρίσθηκε τελευταία. void yyless(int n) Οπισθοδρόμηση n χαρακτήρων στη συμβολοσειρά εισόδου της λεξικής ανάλυσης. ECHO Εκτυπώνει την yytext στο yyout.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Γεννήτριες λεξικών αναλυτών
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Γεννήτριες λεξικών αναλυτών ΠΑΡΑΔΕΙΓΜΑ: %{ /* πρόγραμμα αναπαραγωγής γραμμών που αρχίζουν ή κατα- λήγουν στο χαρακτήρα a */ #include %} ends_with_a.*a\n begins_with_aa.*\n % {ends_with_a}ECHO; {begins_with_a}ECHO;.*\n; % void main() { yylex();}
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα κανονική έκφραση για την αναγνώριση ονομάτων: όνομα = {γράμμα}({γράμμα} | {ψηφίο})* αντίστοιχο προσδιοριστικό πεπερασμένο: Γιατί μετατρέπουμε τις κανονικές εκφράσεις σε αυτόματα; Επειδή οι μηχανές πεπερασμένων καταστάσεων μας παρέχουν ένα θεωρητικό πλαίσιο και πλήθος αλγορίθμων για την ανάπτυξη αλγορίθμων αναγνώρισης της γλώσσας των εκφράσεων.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΙΙ πλήρες προσδιοριστικό αυτόματο για ονόματα: ΣΥΜΒΑΣΕΙΣ: Δεν απεικονίζουμε τις καταστάσεις λάθους. Χρησιμοποιούμε διπλό κύκλο για τις καταστάσεις κατάληξης.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΙΙΙ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ ΠΕΠΕΡΑΣΜΕΝΟ ΑΥΤΌΜΑΤΟ
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΙV ΠΑΡΑΔΕΙΓΜΑΤΑ φυσικός = [0-9]+ ακέραιος = (+ | -)?{φυσικός} αριθμός = {ακέραιος}(“.” {φυσικός}) ? (E {ακέραιος})?
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα V Αυτόματο για τα σχόλια στη C:
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα VI ΠΡΟΣΟΜΟΙΩΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΌΜΑΤΩΝ Έστω το αυτόματο και ο πίνακας μετάβασης, που εκφράζει τη συνάρτηση μετάβασης του αυτόματου και δηλώνει τις καταστάσεις κατάληξης γράμμαψηφίοδιαχωριστή ς καταλήξεις «αρχή»«όνομα » ΟΧΙ «όνομα » «τέλος»ΟΧΙ «τέλος» ΝΑΙ
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα VIΙ ΠΡΟΣΟΜΟΙΩΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΌΜΑΤΩΝ Αλγόριθμος προσομοίωσης αυτόματων Είσοδος: Μία συμβολοσειρά εισόδου, ένας πίνακας μετάβασης Τ και ένας πίνακας KA λογικών τιμών, που δηλώνουν τις καταλήξεις του αυτόματου Έξοδος: Το αν η συμβολοσειρά εισόδου ανήκει στη γλώσσα του αυτόματου ή όχι Περιγραφή: κατάσταση:= «αρχή»; ch:= ο επόμενος χαρακτήρας εισόδου; Όσο ((όχι ΚΑ[κατάσταση]) ΚΑΙ (όχι Τ[κατάσταση, ch] κενό)) επανέλαβε νέα_κατάσταση:= Τ[κατάσταση, ch]; ch:= ο επόμενος χαρακτήρας εισόδου; κατάσταση:= νέα_κατάσταση; Τέλος επανάληψης αν (ΚΑ[κατάσταση]) τότε συμβολοσειρά αποδεκτή; διαφορετικά συμβολοσειρά μη αποδεκτή;
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα VIΙΙ ΠΡΟΣΟΜΟΙΩΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΌΜΑΤΩΝ Αλγόριθμος υπολογισμού πίνακα μετάβασης ενός αυτόματου Είσοδος: Ένα πρότυπο αναγνώρισης P Έξοδος: Ο πίνακας μετάβασης του αυτόματου που παράγεται από το πρότυπο P Περιγραφή: m:= μήκος(P); Για (s:=0 μέχρι m) επανέλαβε Για (κάθε ) επανέλαβε k:=min(m+1, s+2); Επανέλαβε k:=k-1; μέχρι (το strcat(πρόθεμα του P που έχει αναγνωρισθεί στο s, α) ταυτίζεται με τους k πρώτους χαρακτήρες του P) Τ[s, α]:=k; Τέλος επανάληψης
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΙΧ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ Στα μη προσδιοριστικά πεπερασμένα αυτόματα, το αλφάβητο Σ επεκτείνεται, έτσι ώστε να συμπεριλαμβάνει τη μετάβαση-ε, η οποία πραγματοποιείται χωρίς την ανάγνωση κάποιου χαρακτήρα της συμβολοσειράς εισόδου. Οι μεταβάσεις-ε είναι απαραίτητες, τόσο στην άμεση αναπαράσταση της κενής συμβολοσειράς, όσο και στην αναπαράσταση της επιλογής μεταξύ διαφορετικών εναλλακτικών περιπτώσεων. Μία άλλη επέκταση, σε σχέση με τον ορισμό των προσδιοριστικών πεπερασμένων αυτομάτων, είναι η επέκταση της συνάρτησης μετάβασης T, έτσι ώστε, για κάθε χαρακτήρα, να είναι δυνατή η πιθανότητα μετάβασης σε περισσότερες από μία καταστάσεις. Λέμε τότε ότι το πεδίο τιμών της συνάρτησης Τ είναι το δυναμοσύνολο του συνόλου καταστάσεων S και αυτό συμβολίζεται με (S).
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα Χ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ Τα μη προσδιοριστικά αυτόματα χρησιμεύουν, ως ενδιάμεση μορφή αναπαράστασης, για διενέργεια λεξικής ανάλυσης. Κάθε κανονική έκφραση μετατρέπεται, από ένα κατάλληλο αλγόριθμο, σε μη προσδιοριστικό αυτόματο, που αναγνωρίζει τη γλώσσα της έκφρασης. Το αυτόματο με τη σειρά του μετατρέπεται με τη χρήση ενός άλλου αλγορίθμου, σε προσδιοριστικό και ακολουθεί ελαχιστοποίηση του αριθμού των καταστάσεών του.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧΙ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ όνομα = {γράμμα}({γράμμα} | {ψηφίο})*
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧΙI ΜΕΤΑΤΡΟΠΗ ΚΑΝΟΝΙΚΩΝ ΕΚΦΡΑΣΕΩΝ ΣΕ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ (ΑΝΑΠΤΥΞΗ THOMPSON) Γίνεται συντακτική ανάλυση της κανονικής έκφρασης. Κατασκευάζονται τα αυτόματα που αντιστοιχούν σε κάθε μία από τις στοιχειώδεις κανονικές εκφράσεις που προκύπτουν. Αν θεωρήσουμε M(r) και M(s) τα αυτόματα των εκφράσεων r και s, τότε το αυτόματο M(r|s) είναι το:
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧΙIΙ ΜΕΤΑΤΡΟΠΗ ΚΑΝΟΝΙΚΩΝ ΕΚΦΡΑΣΕΩΝ ΣΕ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ (ΑΝΑΠΤΥΞΗ THOMPSON) Για την κανονική έκφραση rs παράγεται το αυτόματο M(rs): Για την κανονική έκφραση r* παράγεται το αυτόματο Μ(r*): Για την κανονική έκφραση (r) χρησιμοποιείται το αυτόματο Μ(r).
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΙΧ ΜΕΤΑΤΡΟΠΗ ΚΑΝΟΝΙΚΩΝ ΕΚΦΡΑΣΕΩΝ ΣΕ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ (ΠΑΡΑΔΕΙΓΜΑ) όνομα = {γράμμα}({γράμμα} | {ψηφίο})* το δένδρο που προκύπτει από τη συντακτική ανάλυση της έκφρασης είναι το
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα Χ ΜΕΤΑΤΡΟΠΗ ΚΑΝΟΝΙΚΩΝ ΕΚΦΡΑΣΕΩΝ ΣΕ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ (ΣΥΝΕΧΕΙΑ ΠΑΡΑΔΕΙΓΜΑΤΟΣ) το μη προσδιοριστικό αυτόματο, που προκύπτει με ανάπτυξη Thompson είναι το
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧΙ ΜΕΤΑΤΡΟΠΗ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟΥ ΑΥΤΟΜΑΤΟΥ ΣΕ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ (ΑΝΑΠΤΥΞΗ ΥΠΟΣΥΝΟΛΩΝ) Οι καταστάσεις του προσδιοριστικού αυτόματου, που προκύπτει ως αποτέλεσμα, είναι υποσύνολα των καταστάσεων του μη προσδιοριστικού αυτόματου. Δύο καταστάσεις «p» και «q» του αρχικού μη προσδιοριστικού αυτόματου ανήκουν στο ίδιο υποσύνολο αν για κάποιο χαρακτήρα-πρότυπο οι μεταβάσεις του μη προσδιοριστικού αυτόματου οδηγούν είτε στην «p», είτε στην «q». Αν υπάρχει μία μετάβαση από την κατάσταση «p» στην «q» μέσω του χαρακτήρα – πρότυπο a και μία μετάβαση-ε από την «q» στην «u», τότε οι καταστάσεις «q» και «u» ανήκουν στο ίδιο υποσύνολο καταστάσεων.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧΙΙ ΜΕΤΑΤΡΟΠΗ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟΥ ΑΥΤΟΜΑΤΟΥ ΣΕ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ (ΑΝΑΠΤΥΞΗ ΥΠΟΣΥΝΟΛΩΝ) Συμβολίζουμε με reach(F,c i ) το σύνολο όλων των καταστάσεων, που είναι προσβάσιμες από τις καταστάσεις του F μέσω μιας μετάβασης με επιγραφή c i. Συμβολίζουμε με εsucc(F), το σύνολο των καταστάσεων, που είναι προσβάσιμες από το F, μετά από πεπερασμένο αριθμό μεταβάσεων-ε. Θεωρούμε ως νέα κατάσταση του προσδιοριστικού αυτόματου, το σύνολο εsucc({«αρχή»}). Για την κατάσταση αυτή και για κάθε νέο υποσύνολο F S, το σύνολο των προσβάσιμων καταστάσεων, μέσω μιας μετάβασης με επιγραφή a, δίνεται ως εsucc(reach(F,a)). Ο αλγόριθμος συνεχίζει για όλους τους χαρακτήρες a Σ. Μία νέα κατάσταση είναι κατάληξη, αν το υποσύνολο καταστάσεων στο οποίο αντιστοιχεί, περιέχει μία κατάληξη του μη προσδ. αυτόματου.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧΙΙΙ ΜΕΤΑΤΡΟΠΗ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟΥ ΑΥΤΟΜΑΤΟΥ ΣΕ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ (ΑΝΑΠΤΥΞΗ ΥΠΟΣΥΝΟΛΩΝ) – παράδειγμα
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧΙV ΜΕΤΑΤΡΟΠΗ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟΥ ΑΥΤΟΜΑΤΟΥ ΣΕ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ (ΑΝΑΠΤΥΞΗ ΥΠΟΣΥΝΟΛΩΝ) – αλγόριθμος Είσοδος: Ένα μη προσδιοριστικό πεπερασμένο αυτόματο Μ Έξοδος: Ένα προσδιοριστικό πεπερασμένο αυτόματο D με γλώσσα L(M) Περιγραφή: Ο αλγόριθμος κατασκευάζει τον πίνακα μεταβάσεων Τ, του D. Οι καταστάσεις και οι μεταβάσεις, που προστίθενται στο αυτόματο D, υπολογίζονται ως εξής: Η μοναδική κατάσταση του D είναι η εsucc({«αρχή»}), που δεν έχει ακόμη επιλεγεί. Όσο (υπάρχει κάποια μη επιλεγμένη κατάσταση ) επανέλαβε επέλεξε την p; Για (κάθε χαρακτήρα ) επανέλαβε q:= εsucc(reach(p, a )); αν (q D) τότε προσέθεσε την q στο D; T(p,a):=q; Τέλος επανάληψης Μία κατάσταση του D γίνεται κατάληξη, αν το αντίστοιχο σύνολο των καταστάσεων περιέχει τουλάχιστο μία κατάληξη του Μ.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧV ΕΛΑΧΙΣΤΟΠΟΙΗΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΟΜΑΤΩΝ Τα προσδιοριστικά αυτόματα, που προκύπτουν ως αποτέλεσμα μιας διαδικασίας ανάπτυξης υποσυνόλων, χαρακτηρίζονται συχνά από μεγάλους πίνακες μεταβάσεων. Αυτό οφείλεται στην αύξηση του αριθμού των καταλήξεων. Έχει αποδειχθεί ότι για δοθέν προσδιοριστικό αυτόματο, υπάρχει ένα μοναδικό ισοδύναμο αυτόματο με τον ελάχιστο αριθμό καταστάσεων. Ο αλγόριθμος των Hopcroft & Ullman παράγει το ελάχιστο αυτόματο, διαιρώντας τις καταστάσεις του αρχικού σε σύνολα, έτσι ώστε όλες οι καταστάσεις του ίδιου συνόλου να αναγνωρίζουν τις ίδιες συμβολοσειρές.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧVΙ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΟΜΑΤΩΝ Λέμε ότι σε ένα αυτόματο, μία συμβολοσειρά w διακρίνει την κατάσταση «s» από την κατάσταση «t», αν ξεκινώντας από την «s» και διοχετεύοντας την w, οδηγούμαστε σε κατάλήξη, ενώ δε συμβαίνει το ίδιο με την κατάσταση «t». Η συμβολοσειρά ε διακρίνει τις καταλήξεις από τις υπόλοιπες καταστάσεις του αυτόματου. Αρχικά διακρίνουμε το χώρο των καταστάσεων σε καταλήξεις και μη καταλήξεις. Σταδιακά συγκροτούνται σύνολα καταστάσεων, έτσι ώστε για κάθε ζεύγος καταστάσεων από διαφορετικά σύνολα, αυτές να έχουν διακριθεί από κάθε συμβολοσειρά εισόδου, ενώ για κάθε ζεύγος καταστάσεων του ίδιου συνόλου να μην έχει συμβεί ακόμη κάτι τέτοιο.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ. Πληροφορικής, Α.Π.Θ Λεξική Ανάλυση και Αυτόματα ΧVΙΙ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΟΜΑΤΩΝ (παράδειγμα) Οι μεταβάσεις όλων των καταλήξεων οδηγούν σε καταλήξεις, τόσο για την περίπτωση, που ο χαρακτήρας εισόδου είναι γράμμα, όσο και στην περίπτωση, που αυτός είναι ψηφίο. Άρα οι τρεις καταλήξεις δε διακρίνονται από κανένα χαρακτήρα.