ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Το αλφαριθμητικό (string)
Advertisements

HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ
Copyright © 2005 Elsevier Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού Πραγματολογία των Γλωσσών Προγραμματισμού Michael L. Scott.
Λογισμικό Συστήματος Κλειώ Σγουροπούλου.
Ένα απλό πρόγραμμα σε C /* ********************************************* * This program prints out the sentence “This is a test.” * *********************************************
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
ΘΠ06 - Μεταγλωττιστές Ανάνηψη από σφάλματα κατά τη συντακτική ανάλυση
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ
Τύποι πραγματικών αριθμών
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
ΤΕΛΕΣΤΕΣ - ΕΚΦΡΑΣΕΙΣ ΜΑΘΗΜΑ 4.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002 Κ. Μουρλάς, Λέκτορας Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους.
Εισαγωγή Ειδικά Θέματα Μεταγγλωτιστών Χειμερινό Εξάμηνο / Κατασκευή compiler για την γλώσσα Minijava.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
ΣΥΝΑΡΤΗΣΕΙΣ.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών8-1 Μετάφραση κατευθυνόμενη από τη σύνταξη Ένας μεταγλωττιστής πρέπει όχι απλώς να αναγνωρίζει κατά πόσο μία.
Ενότητα Α.4. Δομημένος Προγραμματισμός
Γραμματικές Ι Τμ. Πληροφορικής, Α.Π.Θ. Κυριακή, 9 Απριλίου 2017.
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
1 ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Πίνακας Συμβόλων Symbol Table.
ΣΑ από κάτω-προς-τα-πάνω
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
Slide 1/42 ΗΥ – 340 Γλώσσες και Μεταφραστές Φροντιστήριο Εισαγωγή στο Flex.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 9: Παραγωγή Ενδιάμεσου Κώδικα (Ενδιάμεσες Γλώσσες) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Περιεχόμενα Μαθήματος
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Α) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
Διαφάνειες παρουσίασης #2
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
Περιεχόμενα Μαθήματος
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language.
Slide 1/52 ΗΥ – 340 Γλώσσες και Μεταφραστές Φροντιστήριο Yacc.
Βασικά στοιχεία της Java
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Πέμπτη, 30 Ιουλίου 2015Τμ.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Γλώσσες Προγραμματισμού Μεταγλωττιστές Λεκτική Ανάλυση Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση II Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού
ΚΕΦΑΛΑΙΟ 2ο - ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ
Κεφάλαιο 4 :: Σημασιολογική Ανάλυση
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
Μανασσάκης Βασίλης Καθηγητής Πληροφορικής
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Μεταγράφημα παρουσίασης:

ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009

Τι είναι ο Bison Ο bison είναι μια βελτίωση του εργαλείου yacc του Unix. O yacc είναι μια γεννήτρια συντακτικών αναλυτών: δέχεται μια γραμματική χωρίς συμφραζόμενα (LALR(1)) και παράγει έναν συντακτικό αναλυτή σε C/C++ Η παραγώμενη συνάρτηση yyparse αναγνωρίζει τις συμβολοσειρές εισόδου, κατασκευάζει το συντακτικό δέντρο και εκτελεί τις ενέργειες που περιγράφονται στο πρόγραμμα

Δομή Προγράμματος %{ Κώδικας C (μακροεντολές, τύποι δεδομένων, δηλώσεις μεταβλητών και συναρτήσεων)‏ %} Δηλώσεις yacc %% Κανόνες παραγωγής γραμματικής (υλοποίηση συναρτήσεων, main() )‏

Δηλώσεις Yacc Δηλώσεις λεκτικών μονάδων %token TK_ID %token TK_IF, TK_ELSE Δηλώσεις τελεστών της γλώσσας και της προτεραιότητας και προσεταιριστικότητας τους. %nonassoc ‘=‘ ‘<‘ ‘>’ %left ‘+’ ‘-’ %left ‘*’ ‘/’ TK_div, TK_mod Δήλωση του συνόλου των σημασιολογικών τιμών και του τύπου κάθε συμβόλου (στην επόμενη φάση της εργασίας)‏

Προτεραιότητα και Προσεταιριστικότητα Τελεστών (1/2)‏ Τα %left, %right δηλώνουν τις προσεταιριστικότητες των tokens που τα ακολουθούν. Η σειρά δήλωσής τους καθορίζει την προτεραιότητα των αντίστοιχων τελεστών. Ισχύει ότι: τα tokens που εμφανίζονται στην ίδια γραμμή έχουν την ίδια προτεραιότητα η προτεραιότητα αυξάνεται από πάνω προς τα κάτω

Προτεραιότητα και Προσεταιριστικότητα Τελεστών (2/2)‏ π.χ. %left ‘+’ ‘-’ %left ‘*’ ‘/’ TK_DIV TK_MOD Τα ‘+’ και ‘-’ έχουν μικρότερη προτεραιότητα από τα ‘*’ και ‘/’ Η έκφραση a+b+c υπολογίζεται ως (a+b)+c Το %nonassoc χρησιμοποιείται για τελεστές που δεν μπορούν να συνδυαστούν μεταξύ τους, π.χ. το ‘=‘ Το %prec δηλώνει τη προτεραιότητα μέσα σε έναν κανόνα Φροντιστήριο - 03/05/2007 03/31/08

Κανόνες Παραγωγής Γραμματικής Η περιγραφή της γραμματικής της γλώσσας γίνεται με κανόνες παραγωγής διατυπωμένους σε BNF μορφή Γενική μορφή κανόνων: αριστερό_μέλος: δεξιό_μέλος; Το αριστερό μέλος είναι ένα μη τερματικό σύμβολο Το δεξιό μέλος μπορεί να περιέχει μηδέν ή περισσότερα τερματικά και μη τερματικά σύμβολα  π.χ. expression: term TK_PLUS expression ;  Τα τερματικά σύμβολα παριστάνονται με κεφαλαία ενώ τα μη τερματικά με μικρό κατά σύμβαση.

Κανόνες Παραγωγής Γραμματικής Μπορούν να δίνονται περισσότερα εναλλακτικά δεξιά μέλη: arithmetic_expr: NUM | arithmetic_expr ‘+’ arithmetic_expr | arithmetic_expr ‘-’ arithmetic_expr | arithmetic_expr ‘*’ arithmetic_expr | arithmetic_expr ‘/’ arithmetic_expr | ‘-’ arithmetic_expr %prec UMINUS | ‘(‘ arithmetic_expr ‘)’ ; id_list: /*empty*/ | id | id TK_COMMA id_list;

Flex και Bison Στο πρώτο μέρος του αρχείου bison (Floop2009.y) δηλώνεται η συνάρτηση για το χειρισμό λαθών void yyerror(const char *)' Η προκαθορισμένη συνάρτηση λεκτικής ανάλυσης που καλείται από τη yyparse() είναι η yylex()‏ Στο flex αρχείο: αφαιρούμε τις δηλώσεις των tokens προσθέτουμε το αρχείο C που παράγεται από το bison #include “floop2009.tab.c” αφαιρούμε τη main()‏

Διαδικασία Παραγωγής Αναλυτή Bison compiler floop2009.tab.h Bison source program floop2009.y floop2009.tab.c Flex compiler Flex source program floop2009.l lex.yy.c floop2009.tab.c C compiler a.out lex.yy.c a.out Sequence of grammar rules Input stream