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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

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

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

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

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

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

Αντίρριο, 14/03/2017 Προδιαγραφές Εργαστηριακής Εργασίας για το μάθημα «Μεταγλωττιστές»

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

Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής

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

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

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

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

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

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

Μεταγλωττιστές. Γιώργος Δημητρίου. Μάθημα 9 ο

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Εισαγωγή στο Flex. Μεταγλωττιστές, Χειμερινό εξάμηνο

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

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

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

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

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

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

Εργαστήριο 4_1 Λεκτική Ανάλυση - Flex Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού

ΕΠΛ 211: Θεωρία Υπολογισμού και Πολυπλοκότητας. Διάλεξη 3: Ντετερμινιστικά Πεπερασμένα Αυτόματα (DFA)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Πίνακας Περιεχοµένων Πρόλογος Κεφάλαιο Βασικές εισαγωγικές έννοιες

Διασυνδεδεμένες Δομές. Δυαδικά Δέντρα. Προγραμματισμός II 1

1. Δεν μπορεί να γίνει κλήση μίας διαδικασίας μέσα από μία συνάρτηση.

Άσκηση 3 (ανακοινώθηκε στις 24 Απριλίου 2017, προθεσμία παράδοσης: 2 Ιουνίου 2017, 12 τα μεσάνυχτα).

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

Παρουσίαση του εργαλείου FLEX

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

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ ΥΠΟΛΕΙΠΟΜΕΝΕΣ ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ HMEΡΗΣΙΩΝ ΚΑΙ ΕΣΠΕΡΙΝΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΡΙΤΗ 13 ΙΟΥΝΙΟΥ 2017

Παρουσίαση του εργαλείου BISON

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Επεξεργασία Ερωτήσεων

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

ΘΕΜΑ Α. 1. Η δυαδική αναζήτηση χρησιμοποιείται μόνο σε ταξινομημένες συλλογές δεδομένων.

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

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

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

Μεταγλωττιστής. Μεταφραστές. Γλώσσες. Είδη Μεταγλωττιστών. Μεταγλωττιστής Τελικό πρόγραµµα (object program) Εισαγωγή Αρχικό πρόγραµµα (source program)

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

Πανεπιστήμιο Πειραιώς Σχολή Τεχνολογιών Πληροφορικής και Επικοινωνιών Τμήμα Ψηφιακών Συστημάτων ομές εδομένων

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

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

Πληροφορική & Τηλεπικοινωνίες. K18 - Υλοποίηση Συστημάτων Βάσεων Δεδομένων Εαρινό Εξάμηνο

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΩΝ & Δ ΤΑΞΗΣ ΕΣΠΕΡΙΝΩΝ

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

Εισαγωγή στον Προγραμματισμό

Μεταγλωττιστές Ενότητα 1: Εισαγωγή

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

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

Transcript:

Γιώργος Δημητρίου Μάθημα 3 ο

Λεκτική Ανάλυση και Λεκτικοί Αναλυτές Γενικά για τη λεκτική ανάλυση Έννοιες που χρειαζόμαστε Τεχνικές λεκτικής ανάλυσης Πίνακας συμβόλων και διαχείριση λαθών Σχεδίαση λεκτικού αναλυτή Καταγραφή χαρακτηριστικών Προγραμματισμός του λεκτικού αναλυτή

Λεκτική Ανάλυση Η αναγνώριση των λεκτικών μονάδων ενός προγράμματος Η πρώτη φάση της μετάφρασης Η μόνη φάση που έχει άμεση επαφή με την είσοδο του μεταγλωττιστή Προεπεξεργασία Μηνύματα ελέγχου λαθών Εισαγωγή ονομάτων στον πίνακα συμβόλων

Αλφάβητο και Λεκτικές Μονάδες Αλφάβητο είναι συνήθως το σύνολο των ASCII χαρακτήρων Οι λέξεις που αναγνωρίζει ο Λεκτικός Αναλυτής (ΛΑ) κωδικοποιούνται στις λεκτικές μονάδες της γλώσσας Επειδή κάποιες από τις λέξεις δε συμμετέχουν στη σύνταξη της γλώσσας (πχ. σχόλια), αυτές δεν παράγουν λεκτικές μονάδες

Αναγνώριση Λεκτικών Μονάδων Η κανονική έκφραση πχ letter ( letter digit _ ) * Η λεκτική μονάδα (token) πχ T_ELSE, ID, FCONST Η λέξη (lexeme) η ακριβής συμβολοσειρά που αναγνωρίστηκε ως η λεκτική μονάδα πχ else, parse_tree_root, 100.325E-2

Αναγνώριση με ΜΠΑ-ε Κατασκευάζουμε ένα ΜΠΑ-ε για κάθε κανονική έκφραση Ενοποίηση όλων των ΜΠΑ-ε σε ένα Ξεκινάμε από την αρχική κατάσταση και προχωράμε με σύνολα καταστάσεων Σταματάμε όταν δεν ορίζεται μετάβαση Βρίσκουμε το επιτυχημένο σύνολο Μέγιστη αναγνωρισμένη λεκτική μονάδα

Συμφραζόμενα / Οπισθοδρόμηση Πόσοι χαρακτήρες πρέπει να διαβαστούν για να αναγνωριστεί μια λεκτική μονάδα; Είναι όλοι οι χαρακτήρες μέρος της λεκτικής μονάδας; Συμφραζόμενα!? Τι κάνουμε, εάν έχουμε διαβάσει περισσότερους χαρακτήρες από όσους αποτελούν τη λεκτική μονάδα;

Διάγραμμα Μετάβασης (ΔΜ) Αναγνώριση με πεπερασμένο αυτόματο Επαυξημένος γράφος μετάβασης Δυνατότητα οπισθοδρόμησης Περισσότερη πληροφορία > 0 1 όχι = *1 2 T_GT = 3 T_GE

Λειτουργία ΛΑ από το ΔΜ Για κάθε λεκτική μονάδα ξεκινάμε από την αρχική κατάσταση του ΔΜ Απορρίπτουμε όταν δε βρίσκουμε ορισμένη μετάβαση Σε κάθε τελική κατάσταση: Αναγνωρίζουμε την αντίστοιχη λεκτική μονάδα Πιθανά οπισθοδρομούμε στην είσοδο Επιστρέφουμε την πληροφορία που χρειάζεται ο Συντακτικός Αναλυτής (ΣΑ)

Κατασκευή ΔΜ Εμπειρική κατασκευή: Κατασκευάζουμε ένα ΝΠΑ για κάθε κανονική έκφραση Μετατροπή κάθε ΝΠΑ σε ΔΜ με προσαύξηση για οπισθοδρόμηση και επιστροφή πληροφορίας στο ΣΑ Ενοποίηση όλων των ΔΜ σε ένα Το τελικό ΔΜ πρέπει να είναι ντετερμινιστικό

Πίνακας Συμβόλων (ΠΣ) Στη φάση αυτή μπορεί να γίνει εισαγωγή στον ΠΣ των ονομάτων που αναγνωρίζει ο ΛΑ Οργάνωση ΠΣ Γραμμικές λίστες Δέντρα δυαδικής αναζήτησης Πίνακες κατακερματισμού Στοιχεία σημασιολογίας θα προστεθούν στις επόμενες φάσεις!

Διαχείριση Λαθών (ΔΛ) Εκτύπωση μηνυμάτων Ανάνηψη από σφάλματα Μέθοδος πανικού Διαγραφή μη επιτρεπτού χαρακτήρα Εισαγωγή χαρακτήρα Αντικατάσταση χαρακτήρα Αντιμετάθεση χαρακτήρων Πολυπλοκότητα / Κόστος / Επιτυχία μεθόδου

Σχεδίαση ΛΑ Ορισμός αλφαβήτου Καταγραφή των λεκτικών μονάδων Κατασκευή ΔΜ ή πίνακα μεταβάσεων ΜΠΑ-ε Υλοποίηση ΛΑ Υλοποίηση λογισμικού προσομοίωσης λειτουργίας του ΔΜ ή του ΜΠΑ-ε Αρχική υλοποίηση ΠΣ Υλοποίηση λογισμικού ΔΛ του ΛΑ

Κατηγορίες Λεκτικών Μονάδων Λέξεις κλειδιά (πχ: and if while) Αναγνωριστικά (Ονόματα) (πχ: iff point_1_3) Σταθερές χωρίς πρόσημο (πχ: 2 2.3 0.1e3 a ) Τελεστές (πχ: + * / <> := ) Διαχωριστές (πχ: [ (,. :: ) Τέλος αρχείου (<<EOF>> ή $) Λέξεις ΛΑ που δεν είναι λεκτικές μονάδες Σχόλια, κενά

Ανάγνωση Προγράμματος Ανάγνωση με δυνατότητα οπισθοδρόμησης Εισαγωγή όλου του αρχείου στη μνήμη! Αρίθμηση γραμμών για ΔΛ Θέση λεκτικών μονάδων στη γραμμή Ρόλος κενών στο ΛΑ Πεζά / Κεφαλαία γράμματα Φώλιασμα σχολίων

Υλοποίηση ΛΑ Με κατ ευθείαν προγραμματισμό - προσομοίωση της μηχανής που χρησιμοποιούμε ΜΠΑ-ε ΔΜ Με τη βοήθεια μετα-εργαλείου γεννήτορα ΛΑ, όπως το Lex ή το Flex

Κατ ευθείαν Προγραμματισμός Προσομοίωση του ΔΜ με κώδικα περιγραφής μεταβάσεων, όπως με C: while(true){ ch = get_next_character(); switch(state){ case 10: if (isalnum(ch)) {...; state = 11;} else {...; unget_character(); return TOKEN;}... } } Χρήση πίνακα μετάβασης Απλή υλοποίηση με ένα βρόχο διαδοχικών μεταβάσεων κατάστασης

Χρήση Lex / Flex Πρώτο μέρος: Κώδικας (πχ ορισμοί κωδικών λεκτικών μονάδων) Συντομογραφίες βασικών κανονικών εκφράσεων Δεύτερο μέρος: Κανόνες αναγνώρισης λεκτικών μονάδων Κώδικας που εκτελείται με κάθε αναγνώριση Τρίτο μέρος: Συμπληρωματικός κώδικας (πχ ορισμός main())

ΛΑ και ΣΑ Ομοιότητες και διαφορές Γιατί υλοποιούμε ξεχωριστά το ΛΑ από το ΣΑ; Απλουστεύουμε και μειώνουμε την ήδη μεγάλη πολυπλοκότητα του ΣΑ Πιο εξειδικευμένη σχεδίαση ΛΑ Μη εξάρτηση των υπόλοιπων φάσεων από τη μορφή του προγράμματος