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

Σχετικά έγγραφα
Σχεδίαση Γλωσσών Προγραμματισμού. Εαρινό Εξάμηνο Lec04 19/02/2019

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

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

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

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

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

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

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

Προγραμματισμός PASCAL

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

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

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

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

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

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

Αποτελέσματα προόδου

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

Φροντιστήριο 1ο Εισαγωγή στο FLEX. Flex. Regular Expressions (1/4)

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

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

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

Εργαστήριο Οργάνωσης Η/Υ. Δαδαλιάρης Αντώνιος

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Μεταγλωττιστές 2019 Θέμα εργασίας

Μεταγλωττιστές Βελτιστοποίηση

ιαφάνειες παρουσίασης #6

HY340, 2009 Α. Σαββίδης Slide 2 / 26. HY340, 2009 Α. Σαββίδης Slide 3 / 26. HY340, 2009 Α. Σαββίδης Slide 4 / 26

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

ιαφάνειες παρουσίασης #3

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

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

Παράλληλη Επεξεργασία Κεφάλαιο 2 Παραλληλισμός Δεδομένων

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

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

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014

Απαντήσεις στο μάθημα Δομημένος Προγραμματισμός ΕΠΑΛ

Γραπτές εξετάσεις στο μάθημα: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Θ) Εισηγητής: Γεωργίου Χρήστος ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ. Β. Χαρακτήρας(Αλφαριθμητικά)

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

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

ΑΠΑΝΤΗΣΕΙΣ. α- Σωστό β- Σωστό γ- Λάθος δ- Λάθος ε- Σωστό στ- Σωστό

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

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ιαφάνειες παρουσίασης #5

ιαφάνειες παρουσίασης #4

ιαφάνειες παρουσίασης #9

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

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

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

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

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

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

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

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

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

Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C

ιαφάνειες παρουσίασης #4

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

Αποθηκευμένες Διαδικασίες Stored Routines (Procedures & Functions)

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

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

Προγραμματισμός PASCAL

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

Αλγόριθμοι. Α. Υπολογιστικά Προβλήματα. Β. Εισαγωγή στους Αλγόριθμους. Γ. ομή Αλγόριθμων. Δ. ομές εδομένων

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

ιαφάνειες παρουσίασης #5

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

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

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

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

Υπολογισμός - Εντολές Ελέγχου

ιαφάνειες παρουσίασης #8

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

Μεταγλωττιστές Βελτιστοποίηση

Τι είναι το Flex. Περιγραφή ενός λεξικογραφικού αναλυτή στη γλώσσα του lex/flex. Γενικά Χαρακτηριστικά του Flex

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

MySQL stored procedures

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

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

ιαφάνειες παρουσίασης #3

ύο βασικές ιδέες Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων 1) ιαχώρισε το πρόβληµα σεµικρότερα καλώς καθορισµένα υπο-προβλήµατα

Προαιρετική Εργασία στο μάθημα Σχεδίαση Γλωσσών και Μεταγλωττιστών

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ιαφάνειες παρουσίασης #8

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

Μορφοποίηση της εξόδου

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Μονοδιάστατοι Πίνακες

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

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

Μονάδες 4. β. x=20 και y=10

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Εργαστήριο 08 Δημιουργία 1 ου Συντακτικού Αναλυτή

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

Transcript:

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

Start Condition Μόλις βρεί τα (quotation mark), αφαιρεί όλα τα text μέχρι να βρεί το επόμενο (quotation mark). Start Condition: Μηχανισμός του Flex που επιτρέπει την εφαρμογή κάποιων κανόνων μόνο αν ισχύει συγκεκριμένη συνθήκη. Παράδειγμα: στην γραμμή 2 ορίζουμε μια συνθήκη STRING στην γραμμή 6 ορίζουμε κανόνα ο οποίος θα εφαρμόζεται μόνο αν ο lexer βρεί (quotation mark). Η ενέργεια του κανόνα αυτού ενεργοποιεί όλους τους κανόνες που αρχίζουν με το «πρόθεμα» STRING

yyleng yyleng εσωτερική μεταβλητή του flex επιστρέφει το μήκος του αναγνωρίσματος Παράδειγμα: Στην γραμμή 3, όταν αναγνωριστεί μια λέξη με κάμποσους χαρακτήρες, η yyleng αυξάνει την τιμή του CharCount τόσο όσο είναι ο αριθμός των χαρακτήρων στη αναγνωρισμένη λέξη.

YYSTYPE yylval, return yyval: Global variable μέσω της οποίας το αναγνώρισα επιστρέφεται στο Parser (Bison) YYSTYPE yylval :Η μεταβλητή μέσω της οποίας επικοινωνεί ο λεξικός αναλυτής με το συντακτικό αναλυτή. Ο προκαθορισμένος τύπος YYTYPE είναι int, αλλά ο χρήστης μπορεί να τον ορίσει σύμφωνα με τις ανάγκες του στο πρώτο μέρος της περιγραφής του λεξικού ή του συντακτικού αναλυτή. Η τιμή της μεταβλητής yylval πρέπει να ενημερώνεται, όποτε αυτή χρειάζεται, στα τμήματα κώδικα action του δευτέρου μέρους της. Parser (Bison) έχει πρόσβαση στις yylval, yylen, και yytext Η εντολή return επιστρέφει στο συντακτικό αναλυτή το αναγνωριστικό της τελευταίας λεξικής μονάδας, που αναγνωρίσθηκε.

%{ #define T_IDENTIFIER 300 #define T_INTEGER 301 #define T_REAL 302 #define T_STRING 303 #define T_ASSIGN 304 #define T_ELSE 305 #define T_IF 306 #define T_THEN 307 #define T_EQ 308 #define T_LT 309 #define T_NE 310 #define T_GE 311 #define T_GT 312 %} Λεκτικός Αναλυτής - Παράδειγμα letter [a-za-z] digit [0-9] ws [ \t\n]+ id [A-Za-z][A-Za-z0-9]* comment "(*"([^*] \n "*"+[^)])*"*"+")" integer [0-9]+/([^0-9] "..") real [0-9]+"."[0-9]*([0-9] "E"[+-]?[0-9]+) string \'([^'] \'\')*\' User Defined Values to Each Token (else lex will assign) ":=" {printf(" %s ", yytext);return(t_assign);} "else" {printf(" %s ", yytext);return(t_else);} Regular Expression Rules for later token definitions Token Definitions

Conditional compilation action "then" { #ifdef PRNTFLG printf(" %s ", yytext); #endif return(t_then); } "<=" {printf(" %s ", yytext);return(t_eq);} "<" {printf(" %s ", yytext);return(t_lt);} "<>" {printf(" %s ", yytext);return(t_ne);} ">=" {printf(" %s ", yytext);return(t_ge);} ">" {printf(" %s ", yytext);return(t_gt);} Token Definitions {id} {printf(" %s ", yytext);return(t_identifier);} {integer} {printf(" %s ", yytext);return(t_integer);} {real} {printf(" %s ", yytext);return(t_real);} {string} {printf(" %s ", yytext);return(t_string);} {comment} {/* T_COMMENT */} {ws} {/* spaces, tabs, newlines */} Discard

Άλλες Ενέργεις- Παράδειγμα ":=" {return(t_assign);} "else" {return(t_else);} "then" {return(t_then);} "<=" {yylval = T_EQ; return(t_eq);}... Etc... ">" {yylval = T_GT; return(t_gt);} [0-9]+ { yylval = atoi(yytext); return INTEGER; } {id} {yylval = install_id(); return(t_identifier);} {integer} {yylval = install_int(); return(t_integer);} {real} {yylval = install_real(); return(t_real);} {comment} {/* T_COMMENT */} {ws} {/* spaces, tabs, newlines */} install_id() { /* A procedure to install the lexeme whose first character is pointed to by yytext and whose length is yylen into symbol table and return a pointer */ } Επιστρέφει την τιμή και το token install_int() { /* Similar but installs an integer lexeme into symbol table */ } install_real() { /* Similar but installs a real lexeme into symbol table */ }

%{ #include "y.tab.h" %} letter [a-za-z] digit [0-9] ws id comment integer real string [ \t\n]+ [A-Za-z][A-Za-z0-9]* "(*"([^*] \n "*"+[^)])*"*"+")" [0-9]+/([^0-9] "..") [0-9]+"."[0-9]*([0-9] "E"[+-]?[0-9]+) \'([^'] \'\')*\' ":=" {return(t_assign);} ":" {return(t_colon);} "array" {return(t_array);} "begin" {return(t_begin);} "case" {return(t_case);} "const" {return(t_const);} "downto" {return(t_downto);} "do" {return(t_do);} "else" {return(t_else);} "end" {return(t_end);} "file" {return(t_file);} "for" {return(t_for);} Pas_lex.l "function" {return(t_function);} /* "goto" {return(t_goto);} */ "if" {return(t_if);} "label" {return(t_label);} "nil" {return(t_nil);} "not" {return(t_not);} "of" {return(t_of);} /* "packed" {return(t_packed);} */ "procedure" {return(t_procedure);} "end" {return(t_end);} "program" {return(t_program);} "record" {return(t_record);} "repeat" {return(t_repeat);} "set" {return(t_set);} "then" {return(t_then);} "to" {return(t_to);} "type" {return(t_type);} "until" {return(t_until);} "var" {return(t_var);} "while" {return(t_while);} /* "with" {return(t_with);} */ "+" {return(t_plus);} "-" {return(t_minus);} "or" {return(t_or);} "and" {return(t_and);} "div" {return(t_div);} "mod" {return(t_mod);} "/" {return(t_rdiv);} "*" {return(t_mult);} "(" {return(t_lparen);} ")" {return(t_rparen);} "=" {return(t_eq);} "," {return(t_comma);} ".." {return(t_range);} "." {return(t_period);} "[" {return(t_lbrack);} "]" {return(t_rbrack);} "<=" {return(t_eq);} "<" {return(t_lt);} "<>" {return(t_ne);} ">=" {return(t_ge);} ">" {return(t_gt);} "in" {return(t_in);} "^" {return(t_uparrow);} ";" {return(t_semi);} {id} {return(t_identifier);} {integer} {return(t_integer);} {real} {return(t_real);} {string} {return(t_string);} {comment} {/* T_COMMENT */} {ws} {/* spaces, tabs, newlines */}