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

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

Μεταγλωττιστές. Σημασιολογική Ανάλυση. Εργαστήριο 9. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

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

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

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

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

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

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

Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας

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

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

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

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

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

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

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

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

Βασικά Στοιχεία της Java

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

ΘΠ06 Μεταγλωττιστές. Εργασία Εξαμήνου: Υλοποίηση ενός Μεταγλωττιστή για τη Γλώσσα Floop2009

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

Προγραμματισμό για ΗΜΥ

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

FORT320. Γενική Περιγραφή. Ειδική Περιγραφή. Α. Λεκτικές Μονάδες

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

Βασικά Στοιχεία της Java

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

Προγραμματισμός Ι (ΗΥ120)

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Πληροφορική 2. Γλώσσες Προγραμματισμού

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

Στοιχειώδης προγραμματισμός σε C++

Εργαστήριο 08 Εισαγωγή στo Yacc

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

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

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Αντικειμενοστρεφής Προγραμματισμός

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ. Στην αναγκαιότητα ύπαρξης των μεταγλωττιστών

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006)

Τι είναι το yacc. Δομή ενός αρχείου yacc. Πρόλογος. ΗΥ 340 Γλώσσες και Μεταφραστές Φροντιστήριο. Ο yacc είναι ένας γενικού σκοπού parser generator.

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

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

HY340, 2010 Α. Σαββίδης. Slide 3 / 43. Slide 4 / 43

Τύποι δεδομένων, τελεστές, μεταβλητές

Μεταγλωττιστές. Συντακτικός Αναλυτής Κατασκευή Πίνακα Συμβόλων (ΠΣ) Εργαστήριο 7. Διδάσκοντες: Δρ. Γεώργιος Δημητρίου Δρ. Άχμεντ Μάχντι

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

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

Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού

Οι εντολές ελέγχου της ροής ενός προγράμματος.

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Επανάληψη για τις Τελικές εξετάσεις

Δομές ελέγχου ροής προγράμματος

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

ΚΕΦΑΛΑΙΟ 6: Γλώσσες. 6.1 Ιστορική εξέλιξη 6.4 Υλοποίηση γλώσσας. Κεφάλαιο 6: «Γλώσσες Προγραµµατισµού»

Θα χρησιμοποιήσουμε το bison, μια βελτιωμένη έκδοση του yacc. Φροντιστήριο 2ο Εισαγωγή στο YACC. Yacc. Δομή Προγράμματος Yacc

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στη γλώσσα προγραμματισμού C++

Προγραμματισμός Ι (HY120)

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

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

Κεφάλαιο 7: Υπορουτίνες

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

3 Αλληλεπίδραση Αντικειμένων

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Προγραμματισμός Ι (ΗΥ120)

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Προγραμματισμός Ι (HY120)

Προγραμματισμός Δομές Δεδομένων

Προγραμματισμός Η/Υ (ΤΛ2007 )

Transcript:

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

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

Σημασιολογική Ανάλυση Σημασιολογία ενός προγράμματος Στατική/Δυναμική σημασιολογία Σημασιολογικά χαρακτηριστικά Κατηγορήματα και κατηγορικές γραμματικές Σημασιολογικές συνθήκες Πίνακας συμβόλων Σημασιολογική ανάλυση Αποτίμηση σημασιολογικών συνθηκών

Σημασιολογία και ΣΑ Όχι αυστηρά καθορισμένα όρια Σημασιολογία μέσα από τη σύνταξη, όταν έτσι διευκολύνεται η συντακτική ανάλυση: Με δήλωση προτεραιότητας και προσεταιριστικότητας τελεστών η γραμματική γίνεται μη διφορούμενη Σημασιολογία εκτός σύνταξης, όταν δε μπορεί να γίνει ενσωμάτωση χωρίς συμφραζόμενα: Έλεγχος τύπων στις αριθμητικές παραστάσεις Δηλώσεις μεταβλητών Κλήσεις συναρτήσεων

Στατική Σημασιολογία Σημασιολογία που αναλύεται κατά τη μετάφραση Τύποι μεταβλητών Εμβέλειες μεταβλητών Δηλώσεις συναρτήσεων Κλήσεις συναρτήσεων Τύποι παραστάσεων και αναθέσεων Άλματα εντός και εκτός μπλοκ

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

Κατηγορικές Γραμματικές Οι κατηγορικές γραμματικές αποτελούν βασικό εργαλείο σημασιολογικής ανάλυσης Απόδοση σημασιολογικών χαρακτηριστικών των συμβόλων της γραμματικής σε κατηγορήματα με επέκταση της γραμματικής σε κατηγορική Υλοποίηση σημασιολογικής ανάλυσης ως ρουτίνες αποτίμησης κατηγορημάτων Αρκούν οι κατηγορικές γραμματικές;

Πέρα από τα Κατηγορήματα Στην πράξη, κάποια σημασιολογικά χαρακτηριστικά αποθηκεύονται σε καθολικές μεταβλητές, όπως για παράδειγμα τον ΠΣ (ST): decl type ID { insert (ST, ID.name, type.t); } Ή κάποια μη τοπικά χαρακτηριστικά, όπως για παράδειγμα η τρέχουσα εμβέλεια: body { { range++; } stmts } { range--; }

Είδη Σημασιολογικών Ελέγχων Έλεγχοι τύπων Έλεγχοι ροής για άλματα (goto, break) Έλεγχοι ύπαρξης ονομάτων Έλεγχοι μοναδικότητας για μεταβλητές ή ετικέτες Έλεγχοι συνέπειας

Συστήματα Τύπων Βασικοί τύποι int, short, boolean, char, real, double Σύνθετοι τύποι Πίνακες (αριθμός διαστάσεων;) Πλειάδες / Σύνολα Εγγραφές Δείκτες

Κωδικοποίηση Τύπων Απλοί τύποι απλή κωδικοποίηση μέσω σταθεράς απαρίθμησης Σύνθετοι τύποι σύνθετη κωδικοποίηση (με κατάλληλες δομές!) array 0-99 0-499 num: int initial: char next: pointer

Έλεγχος Τύπων Έλεγχος τύπων σε παραστάσεις Μετατροπές τύπων Υπερφόρτωση τελεστών Πολυμορφικοί τελεστές και συστήματα τύπων Ονόματα και συνώνυμα τύπων Ισοδυναμία τύπων Υποτύποι Εξαγωγή τύπων

Δυναμικός Έλεγχος Τύπων Κάποιοι έλεγχοι δε μπορούν να γίνουν κατά τη μετάφραση Παράδειγμα: var a: array[1..100] of integer; read(i); a[i] := 6;

Έλεγχος Ροής Έλεγχος ετικετών σε εντολές goto αριθμοί ή ονόματα Έλεγχος χρήσης ειδικών εντολών: break continue return Χρειάζεται έλεγχος δομής εντολών ελέγχου;

Έλεγχος Ονομάτων Έλεγχος ύπαρξης σε χρήση ονόματος Απαίτηση προηγούμενης δήλωσης Προαιρετική σε κάποιες γλώσσες (κυρίως συναρτησιακού) προγραμματισμού Έλεγχος μοναδικότητας σε δήλωση ονόματος Απαγόρευση πολλαπλών δηλώσεων στην ίδια εμβέλεια Πολλαπλές δηλώσεις επιτρέπονται σε διαφορετικές εμβέλειες

Έλεγχος Συνέπειας Κάποιες δομές εντολών δεν ελέγχονται από το συντακτικό αναλυτή κλασική FORTRAN do 100 i=1,100 if (x.gt. 0) then a(i) = x * b(i) else a(i) = 0.0 endif 100 continue

Σημασιολογική Ανάλυση και Bison Δήλωση κατηγορημάτων %type<i> L %type<type> expression variable assignment Αναφορά σε κατηγορήματα Ένα κατηγόρημα ανά σύμβολο L L, id $$ $1 $2 $3 Σημασιολογικές ρουτίνες L L, id { addtype ($3,$1); }

Σημασιολογική Ανάλυση και Flex Ο τύπος YYSTYPE των κατηγορημάτων των τερματικών συμβόλων Δήλωση %union στο Bison Η μεταβλητή yylval Ανάθεση τιμής κατηγορήματος πριν την επιστροφή της λεκτικής μονάδας yylval.stentry = insertst(strdup(yytext)); yylval.ivalue = atoi(yytext);