Κεφάλαιο 2: Τυπικές γλώσσες. Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος / 216

Σχετικά έγγραφα
Μεταγλωττιστές. Ενότητα 2: Τυπικές γλώσσες (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

Υλοποίηση ΛΑ με το flex

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 3 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών. Προδιαγραφές

Αυτόματα. Παράδειγμα: πωλητής καφέ (iii) Παράδειγμα: πωλητής καφέ (iv) Εισαγωγή στην Επιστήμη των Υπολογιστών 6

Εισαγωγή στην Επιστήμη των Υπολογιστών

Έστω συμβολοσειρά Το σύνολο FIRST περιέχει τα τερματικά σύμβολα από τα οποία αρχίζουν οι συμβολοσειρές που παράγονται από την

Κεφάλαιο 4: Συντακτική ανάλυση

ΜΑΘΗΜΑ: Μεταγλωττιστές

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Λεκτική Ανάλυση

Κεφάλαιο 2: Τυπικές γλώσσες

Εισαγωγή στην Επιστήμη των Υπολογιστών

Απάντηση: (func endfunc)-([a-za-z])+

Εισαγωγή στην Επιστήμη των Υπολογιστών

Μεταγλωττιστές. Ενότητα 4: Τυπικές γλώσσες (Μέρος 3 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Αυτόματα και Υπολογιστικά Μοντέλα Automata and Models of Computation

Υλοποίηση ΣΑ με το bison

Στοιχεία Θεωρίας Υπολογισµού (1): Τυπικές Γλώσσες, Γραµµατικές

Ποιές οι θεµελιώδεις δυνατότητες και ποιοί οι εγγενείς περιορισµοί των υπολογιστών ; Τί µπορούµε και τί δε µπορούµε να υπολογίσουµε (και γιατί);

Ορισµοί. Τυπικές Γλώσσες Γραµµατικές και Μεταφραστές. Αλφάβητο: ένα οποιδήποτε µη κενό και πεπερασµένο σύνολο Σ αποτελούµενο από σύµβολα

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 7: Ασυμφραστικές Γλώσσες (Γλώσσες Ελεύθερες Συμφραζομένων)

Στοιχεία Θεωρίας Υπολογισµού (2): Πεπερασµένα Αυτόµατα, Κανονικές Εκφράσεις

Μεταγλωττιστές. Ενότητα 5: Λεκτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Περιεχόμενα. 1 Υπολογισιμότητα. Ιστορία - Εισαγωγή. Μαθηματικό Υπόβαθρο. LOOP: Μια απλή γλώσσα προγραμματισμού

Σειρά Προβλημάτων 1 Λύσεις

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στις βασικές έννοιες που σχετίζονται με τη λεξική ανάλυση. Στη δήλωση ορισμό κανονικών εκφράσεων

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο Πολυτεχνείο. Λεκτική Ανάλυση. Μεταγλωττιστές. Νίκος Παπασπύου, Κωστής Σαγώνας

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 9: Αυτόματα Στοίβας (Pushdown Automata - PDA)

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

Γλώσσες Χωρίς Συμφραζόμενα

Σειρά Προβλημάτων 1 Λύσεις

Εισαγωγή στην Επιστήμη των Υπολογιστών

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 1 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Στοιχεία Θεωρίας Γλωσσών. (συνέχεια) (συνέχεια) Πέμπτη 27 Οκτωβρίου 2016 Θεόδωρος Τζουραμάνης Επίκουρος Καθηγητής

Θεμελιώδη Θέματα Επιστήμης Υπολογιστών

Η δυαδική σχέση M ( «παράγει σε ένα βήμα» ) ορίζεται ως εξής: (q, w) M (q, w ), αν και μόνο αν w = σw, για κάποιο σ Σ

Θεωρία Υπολογισμού και Πολυπλοκότητα

Ανάπτυξη και Σχεδίαση Λογισμικού

Λεκτικός Αναλυτής. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

Μεταγλωττιστές. Ενότητα 7: Συντακτική ανάλυση (Μέρος 1 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Σύνοψη Προηγούµενου. Γλώσσες χωρίς Συµφραζόµενα (2): Αυτόµατα Στοίβας. Παραδείγµατα Σχεδιασµού CFG. Παράδειγµα 1.

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Ισοδυναμία Αιτ. Και μη Αιτ. Π.Α.

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Επανάληψη Μαθήματος

Υπολογίσιμες Συναρτήσεις

Περιεχόμενα Συμβολοσειρές Γλώσσες ΘΥ 6: Συμβολοσειρές & γλώσσες Επ. Καθ. Π. Κατσαρός 24/07/2014 Επ. Καθ. Π. Κατσαρός ΘΥ 6: Συμβολοσειρές & γλώσσες

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (2)

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Θέματα Μεταγλωττιστών

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

HEAD INPUT. q0 q1 CONTROL UNIT

Πανεπιστήμιο Θεσσαλίας Τμήμα Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών

Μοντελοποίηση υπολογισμού. Θέματα Υπολογισμού στον Πολιτισμό Πεπερασμένα αυτόματα

Θέματα Μεταγλωττιστών

ΠΛΗ30 ΕΝΟΤΗΤΑ 3: ΚΑΝΟΝΙΚΕΣ ΓΛΩΣΣΕΣ. Μάθηµα 3.2: ηµήτρης Ψούνης

Κανονικές Γλώσσες. ιδάσκοντες: Φ. Αφράτη,. Φωτάκης Επιμέλεια διαφανειών:. Φωτάκης. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Υλοποίηση ΣΑ με το bison

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Λογισμικό Συστήματος. Κλειώ Σγουροπούλου

Βασικές έννοιες προγραμματισμού

Σειρά Προβλημάτων 1 Λύσεις

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 4 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Ασκήσεις από παλιές εξετάσεις

Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές. 5 ο Μάθημα. Λεωνίδας Αλεξόπουλος Λέκτορας ΕΜΠ. url:

Μοντελοποίηση Υπολογισμού. Γραμματικές Πεπερασμένα Αυτόματα Κανονικές Εκφράσεις

Πληροφορική. Ενότητα 4 η : Κωδικοποίηση & Παράσταση Δεδομένων. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Σειρά Προβλημάτων 1 Λύσεις

Εισαγωγή. Γλώσσες προγραμματισμού Μεταγλωττιστές Αναγκαιότητα και ιστορική αναδρομή

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (1)

Η γλώσσα προγραμματισμού Strange

Κ15 Ψηφιακή Λογική Σχεδίαση 2: Δυαδικό Σύστημα / Αναπαραστάσεις

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕΔΟΝΙΑΣ ΟΙΚΟΝΟΜΙΚΩΝ ΚΑΙ ΚΟΙΝΩΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ ΥΠΟΛΟΓΙΣΜΩΝ ΚΑΙ ΑΥΤΟΜΑΤΩΝ

Μεταγλωττιστές. Εργαστήριο 5. Εισαγωγή στο BISON. Γεννήτρια Συντακτικών Αναλυτών. 2 η Φάση Μεταγλώττισης Συντακτική Ανάλυση

Θεωρία Υπολογισμού και Πολυπλοκότητα Κανονικές Γλώσσες (1)

Θεωρία Υπολογισμού. Ασκήσεις. Δρ. Τζάλλας Αλέξανδρος, Καθηγητής Εφαρμογών. Τμ. Μηχανικών Πληροφορικής Τ.Ε.

Σειρά Προβλημάτων 4 Λύσεις

Σειρά Προβλημάτων 4 Λύσεις

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών: Εργαστηριακή Άσκηση

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Θεωρία Υπολογισμού Αλφάβητα, Γλώσσες, Κανονικές Εκφράσεις

CSC 314: Switching Theory

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 7 και 8: Αναπαραστάσεις. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Μεταγλωττιστές. Δημήτρης Μιχαήλ. Ακ. Έτος Λεκτική Ανάλυση. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Γλώσσες Προγραμματισμού Μεταγλωττιστές. Λεκτική Ανάλυση II

Τεχνητή Νοημοσύνη. 21η διάλεξη ( ) Ίων Ανδρουτσόπουλος.

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Κατηγορικές Γραµµατικές

Mεταγλωττιστές. 4 ο εργαστηριακό μάθημα Λεξική ανάλυση και flex. Θεωρία

Γενικές Παρατηρήσεις. Μη Κανονικές Γλώσσες - Χωρίς Συµφραζόµενα (1) Το Λήµµα της Αντλησης. Χρήση του Λήµµατος Αντλησης.

Transcript:

Κεφάλαιο 2: Τυπικές γλώσσες Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 13 / 216

Τυπικές γλώσσες (i) Βασικές έννοιες Αλφάβητο Σύμβολο Συμβολοσειρά Μήκος συμβολοσειράς Σύνολο συμβολοσειρών μήκους Σύνολο όλων των συμβολοσειρών a Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 14 / 216

Τυπικές γλώσσες (ii) Βασικές έννοιες (συνέχεια) Κενή συμβολοσειρά Παράθεση συμβολοσειρών Παράθεση συμβολοσειράς με τον εαυτό της Πρόθεμα, επίθεμα, υποσυμβολοσειρά Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 15 / 216

Τυπικές γλώσσες (iii) Βασικές έννοιες (συνέχεια) Γλώσσα Ένωση γλωσσών Παράθεση γλωσσών Παράθεση γλώσσας με τον εαυτό της Κλείσιμο ή άστρο του Kleene Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 16 / 216

Τυπικές γλώσσες (iv) Γεννητικά μοντέλα Γραμματική : τερματικά σύμβολα a : μη τερματικά σύμβολα : κανόνες παραγωγής : αρχικό σύμβολο Παραγωγές: αν και τότε Γλώσσα: Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 17 / 216

Τυπικές γλώσσες (v) Ιεραρχία Chomsky Τύπου 0: όλες οι γραμματικές, Τύπου 1: γραμματικές με συμφραζόμενα (context-sensitive), με Τύπου 2: γραμματικές χωρίς συμφραζόμενα (context-free) Τύπου 3: κανονικές γραμματικές (regular) a ή a Ειδική περίπτωση: γλώσσες που παράγουν την κενή συμβολοσειρά Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 18 / 216

Τυπικές γλώσσες (vi) Αναγνωριστές Τύπου 0: μηχανή Turing Τύπου 1: γραμμικά περιορισμένη μηχανή Turing Τύπου 2: αυτόματα στοίβας (push-down automata) Χρήσιμα στη συντακτική ανάλυση Τύπου 3: πεπερασμένα αυτόματα (finite automata) Χρήσιμα στη λεκτική ανάλυση Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 19 / 216

Κανονικές γλώσσες (i) Κανονικές γραμματικές Μόνο κανόνες a ή a ισοδύναμα a ή a Κανονικές εκφράσεις (regular expressions) Κενή συμβολοσειρά: Κάθε σύμβολο του : a Παράθεση δύο κανονικών εκφράσεων: Διάζευξη δύο κανονικών εκφράσεων: Κλείσιμο (ή άστρο) Kleene: Συντομογραφίες: απαλοιφή περιττών παρενθέσεων a a a a a Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 20 / 216

Κανονικές γλώσσες (ii) Παραδείγματα κανονικών εκφράσεων Ακέραιες σταθερές χωρίς πρόσημο στην Pascal ένα ή περισσότερα δεκαδικά ψηφία Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 21 / 216

Κανονικές γλώσσες (ii) Παραδείγματα κανονικών εκφράσεων Ακέραιες σταθερές χωρίς πρόσημο στην Pascal ένα ή περισσότερα δεκαδικά ψηφία 0-9 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 21 / 216

Κανονικές γλώσσες (ii) Παραδείγματα κανονικών εκφράσεων Ακέραιες σταθερές χωρίς πρόσημο στην Pascal ένα ή περισσότερα δεκαδικά ψηφία 0-9 Αριθμητικές σταθερές χωρίς πρόσημο στη C Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 21 / 216

Κανονικές γλώσσες (ii) Παραδείγματα κανονικών εκφράσεων Ακέραιες σταθερές χωρίς πρόσημο στην Pascal ένα ή περισσότερα δεκαδικά ψηφία 0-9 Αριθμητικές σταθερές χωρίς πρόσημο στη C ακέραιο μέρος που δεν αρχίζει με μηδέν, εκτός αν είναι μηδενικό (γιατί;) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 21 / 216

Κανονικές γλώσσες (ii) Παραδείγματα κανονικών εκφράσεων Ακέραιες σταθερές χωρίς πρόσημο στην Pascal ένα ή περισσότερα δεκαδικά ψηφία 0-9 Αριθμητικές σταθερές χωρίς πρόσημο στη C ακέραιο μέρος που δεν αρχίζει με μηδέν, εκτός αν είναι μηδενικό (γιατί;) 1-9 0-9 0 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 21 / 216

Κανονικές γλώσσες (ii) Παραδείγματα κανονικών εκφράσεων Ακέραιες σταθερές χωρίς πρόσημο στην Pascal ένα ή περισσότερα δεκαδικά ψηφία 0-9 Αριθμητικές σταθερές χωρίς πρόσημο στη C ακέραιο μέρος που δεν αρχίζει με μηδέν, εκτός αν είναι μηδενικό προαιρετικά: υποδιαστολή και κλασματικό μέρος (γιατί;) 1-9 0-9 0 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 21 / 216

Κανονικές γλώσσες (ii) Παραδείγματα κανονικών εκφράσεων Ακέραιες σταθερές χωρίς πρόσημο στην Pascal ένα ή περισσότερα δεκαδικά ψηφία 0-9 Αριθμητικές σταθερές χωρίς πρόσημο στη C ακέραιο μέρος που δεν αρχίζει με μηδέν, εκτός αν είναι μηδενικό προαιρετικά: υποδιαστολή και κλασματικό μέρος (γιατί;) 1-9 0-9 0. 0-9 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 21 / 216

Κανονικές γλώσσες (ii) Παραδείγματα κανονικών εκφράσεων Ακέραιες σταθερές χωρίς πρόσημο στην Pascal ένα ή περισσότερα δεκαδικά ψηφία 0-9 Αριθμητικές σταθερές χωρίς πρόσημο στη C ακέραιο μέρος που δεν αρχίζει με μηδέν, εκτός αν είναι μηδενικό προαιρετικά: υποδιαστολή και κλασματικό μέρος προαιρετικά: εκθέτης με ή χωρίς πρόσημο 1-9 0-9 0. 0-9 (γιατί;) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 21 / 216

Κανονικές γλώσσες (ii) Παραδείγματα κανονικών εκφράσεων Ακέραιες σταθερές χωρίς πρόσημο στην Pascal ένα ή περισσότερα δεκαδικά ψηφία 0-9 Αριθμητικές σταθερές χωρίς πρόσημο στη C ακέραιο μέρος που δεν αρχίζει με μηδέν, εκτός αν είναι μηδενικό (γιατί;) προαιρετικά: υποδιαστολή και κλασματικό μέρος προαιρετικά: εκθέτης με ή χωρίς πρόσημο 1-9 0-9 0. 0-9 E e 0-9 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 21 / 216

Πεπερασμένα αυτόματα (i) 0 0 A 1 1 B Καταστάσεις και μεταβάσεις Ντετερμινιστικά (ΝΠΑ), μη ντετερμινιστικά (ΜΠΑ) και ΜΠΑ με κενές μεταβάσεις (ΜΠΑ- ) Αρχική κατάσταση, τελικές καταστάσεις Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 22 / 216

Πεπερασμένα αυτόματα (ii) 0 0 A 1 1 B Ποια γλώσσα αναγνωρίζει; Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 23 / 216

Πεπερασμένα αυτόματα (ii) 0 0 A 1 1 B Ποια γλώσσα αναγνωρίζει; Τη γλώσσα των συμβολοσειρών που αποτελούνται από 0 και 1 και περιέχουν άρτιο αριθμό 1 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 23 / 216

Κανονικές γλώσσες, ανασκόπηση Αναγωγές και ισοδυναμίες κανονική γραμματική ΜΠΑ- κανονική έκφραση ΜΠΑ- ΜΠΑ- Ελαχιστοποίηση ΝΠΑ ΜΠΑ- κανονική γραμματική ΜΠΑ- κανονική έκφραση ΝΠΑ Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 24 / 216

Κεφάλαιο 3: Λεκτική ανάλυση Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 25 / 216

Λεκτική ανάλυση Λεκτικές μονάδες (tokens) Αναγνωρίζονται με πεπερασμένα αυτόματα που: διαβάζουν ενδεχομένως περισσότερους χαρακτήρες οπισθοδρομούν αν χρειαστεί διαθέτουν έξοδο που χρησιμοποιείται στη συντακτική ανάλυση Ειδικός συμβολισμός: διαγράμματα μετάβασης Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 26 / 216

Διαγράμματα μετάβασης (i) Αναγνωριστικά της Pascal L 0 L 1 D Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 27 / 216

Διαγράμματα μετάβασης (i) Αναγνωριστικά της Pascal L 0 L 1 D L L * όχι L/D 0 1 2 (T_id) D Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 27 / 216

Διαγράμματα μετάβασης (ii) Τελεστές και 0 > 1 = 2 Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 28 / 216

Διαγράμματα μετάβασης (ii) Τελεστές και 0 > 1 = 2 * όχι = 2 (T_gt) 0 > 1 = 3 (T_ge) Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 28 / 216

Κατασκευή του ΛΑ (i) Καταγραφή και ταξινόμηση χαρακτήρων mapping ASCII EOF Καταγραφή και ταξινόμηση λεκτικών μονάδων Κωδικοποίηση λεκτικών μονάδων Ακολουθία χαρακτήρων (lexeme) Σχεδίαση του διαγράμματος μετάβασης Υλοποίηση του λεκτικού αναλυτή Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 29 / 216

Κατασκευή του ΛΑ (ii) Επιμέρους θέματα Τρόπος διαχωρισμού λεκτικών μονάδων Σχόλια Διάκριση πεζών / κεφαλαίων γραμμάτων Ενδιάμεση μνήμη (buffer) Ανάνηψη από σφάλματα Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 30 / 216

Κατασκευή του ΛΑ (iii) W 0. ; ( ) = + - EOF * 20 21 22 23 26 30 31 45 (T_dot) (T_smcolon) (T_lparen) (T_rparen) (T_eq) (T_plus) (T_minus) (T_eof) : < > / * Σχεδίαση συνολικού διαγράμματος μετάβασης = 24 (T_assign) L E 1 6 40 όχι = * (T_colon) = όχι = = όχι = = όχι = * όχι * 25 (T_le) όχι L E D _ 2 3 4 5 45 41 (T_lt) * * 27 (T_ge) 42 (T_gt) * 28 (T_ne) 43 (T_div) * 29 (T_power) 44 (T_times) * L E D _ (T_id) όχι D. Ε όχι D Ε D * D 7. 8 E + - 9 10 D 11 όχι D 46 D Ε D D (T_const) { 12 } 0 όχι } Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 31 / 216

Κατασκευή του ΛΑ (iv) Εναλλακτικοί τρόποι υλοποίησης: Χειρωνακτικά Με πίνακα μεταβάσεων Με το μεταεργαλείο flex Νίκος Παπασπύρου, Κωστής Σαγώνας Μεταγλωττιστές Μάρτιος 2017 32 / 216