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

Σχετικά έγγραφα
Υλοποίηση ΛΑ με το flex

Τυπικές Γλώσσες. Μεταγλωττιστές. (μέρος 1ο) Νίκος Παπασπύου, Κωστής Σαγώνας

Συντακτική ανάλυση. Μεταγλωττιστές. (μέρος 3ον) Νίκος Παπασπύου, Κωστής Σαγώνας

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

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

Τυπικές Γλώσσες. Μεταγλωττιστές. (μέρος 2ο) Νίκος Παπασπύου, Κωστής Σαγώνας

16. ÌåëÝôç ôùí óõíáñôþóåùí y=çìx, y=óõíx êáé ôùí ìåôáó çìáôéóìþí ôïõò.

Cel animation. ÅöáñìïãÝò ðïëõìýóùí

Συντακτική ανάλυση. Μεταγλωττιστές. (μέρος 1ον) Νίκος Παπασπύου, Κωστής Σαγώνας

¼ñãáíá Èåñìïêñáóßáò - ÓõóêåõÝò Øõêôéêþí Ìç áíçìüôùí

ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ ÏÌÁÄÁ ÈÅÌÁÔÙÍ B

ÓÕÍÄÕÁÓÔÉÊÇ É, ÓÅÐÔÅÌÂÑÉÏÓ ÏÌÁÄÁ ÈÅÌÁÔÙÍ Á

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

Ó ÅÄÉÁÓÌÏÓ - ÊÁÔÁÓÊÅÕÇ ÓÔÏÌÉÙÍ & ÅÉÄÉÊÙÍ ÅÎÁÑÔÇÌÁÔÙÍ ÊËÉÌÁÔÉÓÌÏÕ V X

ÌåôáãëùôôéóôÝò. Áðñßëéïò 2011

ÊåöÜëáéï 3 ÏÑÉÆÏÕÓÅÓ. 3.1 ÅéóáãùãÞ

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

ÓÕÍÈÇÊÇ ÁÌÅÔÁÈÅÔÏÔÇÔÁÓ ÓÕÓÔÇÌÁÔÏÓ ÔÏÉ ÙÌÁÔÙÍ ÐÁÑÁÑÔÇÌÁ Â

ÄéáêñéôÝò êáé óõíå åßò ôõ áßåò ìåôáâëçôýò ÁóêÞóåéò

3.1 Íá âñåèåß ôï ðåäßï ïñéóìïý ôçò óõíüñôçóçò f: 4 x. (iv) f(x, y, z) = sin x 2 + y 2 + 3z Íá âñåèïýí ôá üñéá (áí õðüñ ïõí): lim

( ) ξî τέτοιο, + Ý åé ìßá ôïõëü éóôïí ñßæá óôï äéüóôçìá ( ) h x =,να δείξετε ότι υπάρχει ( α,β) x ΕΦΑΡΜΟΓΕΣ ΣΤΙΣ ΠΑΡΑΓΩΓΟΥΣ

ÊåöÜëáéï 4 ÄÉÁÍÕÓÌÁÔÁ. 4.1 ÅéóáãùãÞ (ÃåùìåôñéêÞ)

Προχωρημένες έννοιες προγραμματισμού σε C

ΕΛΕΝΗ ΓΕΡΟΥΛΑΝΟΥ. Εικονογράφηση ΔΡΑΣΤΗΡΙΟΤΗΤΕΣ ΓΙΑ ΠΑΙΔΙΑ ΝΗΠΙΑΓΩΓΕΙΟΥ ΛΗΔΑ ΒΑΡΒΑΡΟΥΣΗ ΕΚΔΟΣΕΙΣ ΠΑΠΑΔΟΠΟΥΛΟΣ

ιαδικασία åãêáôüóôáóçò MS SQL Server, SingularLogic Accountant, SingularLogic Accountant Ìéóèïäïóßá

ΣΕΡΙΦΟΣ ΣΕΡΙΦΟΥ ΓΑΛΑΝΗΣ

ÅÍÏÔÇÔÁ 6ç ÑÏÍÏÓ-ÄÉÁÄÏ Ç

Επεξεργασία κειμένου και συμβολοσειρών σε C

2.4 ñçóéìïðïéþíôáò ôïí êáíüíá áëõóßäáò íá âñåèåß ç dr

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

B i o f l o n. Ãéá åöáñìïãýò ìåôáöïñüò çìéêþí

ΠΑΡΟΣ ΑΓΚΑΙΡΙΑΣ ΟΙΚΙΣΜΟΣ: ΠΑΡΑΔΟΣΙΑΚΟΣ ÏÉÊÉÓÌÏÓ. 2) Για τουριστικές εγκαταστάσεις και για εγκαταστάσεις οργανισμών κοινής ωφελείας:

Ç íýá Ýííïéá ôïõ ýðíïõ!

Ç ãëþóóá Alan. ÌåôáãëùôôéóôÝò 2011 ÈÝìá åñãáóßáò

3524 ÅÖÇÌÅÑÉÓ ÔÇÓ ÊÕÂÅÑÍÇÓÅÙÓ (ÔÅÕ ÏÓ ÄÅÕÔÅÑÏ)

Ç ãëþóóá Dana. ÌåôáãëùôôéóôÝò 2008 ÈÝìá åñãáóßáò

Ìáèáßíïõìå ôéò áðïäåßîåéò

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

Ðñïêýðôïõí ôá ðáñáêüôù äéáãñüììáôá.

Ç ãëþóóá Grace. ÌåôáãëùôôéóôÝò 2009 ÈÝìá åñãáóßáò

ΔΙΗΜΕΡΟ ΚΙΝΗΤΟΠΟΙΗΣΕΩΝ ΤΩΝ ΔΗΜΩΝ ΤΗΣ ΧΩΡΑΣ. Αναστολή λειτουργίας των δήμων στις 12 και 13 Σεπτεμβρίου 2012

Óõíå Þ êëüóìáôá & Áöáéñåôéêüò Åõêëåßäåéïò áëãüñéèìïò

Áóõìðôùôéêïß Óõìâïëéóìïß êáé Éåñáñ ßá ÓõíáñôÞóåùí

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ.

ÌåôáãëùôôéóôÝò. ÅéóáãùãÞ. ÅéóáãùãÞ (ii) Íßêïò Ðáðáóðýñïõ ÊùóôÞò Óáãþíáò. Áñ éêþ ãëþóóá L A A T ÔåëéêÞ ãëþóóá L T Y

Ç ãëþóóá Tony. ÌåôáãëùôôéóôÝò 2010 ÈÝìá åñãáóßáò

9. ÁíÜðôõîç ðñïãñáììüôùí ìå ñïíéêýò ëåéôïõñãßåò.

J-Y(St)Y Ôçëåöùíéêü êáëþäéï åóùôåñéêïý þñïõ ìå èùñüêéóç êáôü VDE 0815

ÐïëëÝò åôáéñßåò ðñïóöýñïõí õðçñåóßåò

Union of Pure and Applied Chemistry).

ÅÍÏÔÇÔÁ 5ç ÔÁ Ó ÇÌÁÔÁ

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ÏñãÜíùóç ÐñïãñÜììáôïò

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ.

Ιστορία της μετάφρασης

3.1 H Ýííïéá ôçò óõíüñôçóçò ÐÁÑÁÄÅÉÃÌÁÔÁ - ÅÖÁÑÌÏÃÅÓ

ÓõíåñãÜæïìáé ìå ôïõò Üëëïõò

4.5 ÁóêÞóåéò çìéêþò éóïññïðßáò ìå åðßäñáóç óôç èýóç éóïññïðßáò

1. Íá ëõèåß ç äéáöïñéêþ åîßóùóç (15 ìïí.) 2. Íá âñåèåß ç ãåíéêþ ëýóç ôçò äéáöïñéêþò åîßóùóçò (15 ìïí.)

e-school EëëçíéêÞ Åôáéñåßá ÌåëÝôçò Ìåôáâïëéóìïý ôùí Ïóôþí Εκπαιδευτικά μαθήματα μýóù δéáäéêôýïõ της Ε.Ε.Μ.Μ.Ο.

µµ Setup : µ 2005

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

Üóêçóç 15. ÕëéêÜ - åîáñôþìáôá äéêôýïõ ðåðéåóìýíïõ áýñá êáé ðíåõìáôéêýò óõóêåõýò

ÁðáñéèìçôÝò- ÓõãêñéôÝò

MultiBoot :

å) Íá âñåßôå ôï äéüóôçìá ðïõ äéáíýåé ôï êéíçôü êáôü ôï ñïíéêü äéüóôçìá áðü ôï ðñþôï Ýùò ôï Ýâäïìï äåõôåñüëåðôï ôçò êßíçóþò ôïõ.

6936 ÅÖÇÌÅÑÉÓ ÔÇÓ ÊÕÂÅÑÍÇÓÅÙÓ (ÔÅÕ ÏÓ ÄÅÕÔÅÑÏ)

Ðñüóêëçóç Προέδρου. Προς : τα Μέλη της Ελληνικής Εταιρείας Μελέτης Μεταβολισμού των Οστών. Μαρούσι 4 Μαίου Áãáðçôïß óõíüäåëöïé

Estimation Theory Exercises*

ÕÄÑÏËÇØÉÅÓ ÔÕÐÏÕ Á2 - Á4 ÌÅ ÁÍÔÉÐÁÃÅÔÉÊÇ ÐÑÏÓÔÁÓÉÁ

Προτεινόμενα θέματα Πανελλαδικών εξετάσεων. Χημεία Θετικής Κατεύθυνσης ΕΛΛΗΝΟΕΚΔΟΤΙΚΗ

: Ï ïäçãüò áõôüò åîçãåß ôïí ôñüðï áíôéêáôüóôáóçò êáé áíáâüèìéóçò ôçò ìíþìçò óôïí õðïëïãéóôþ.

: Ï ïäçãüò áõôüò ðåñéãñüöåé ôïí ôñüðï ñþóçò êáñôþí åîùôåñéêþí ìýóùí ìå ôïí õðïëïãéóôþ.

ÐÉÍÁÊÅÓ ÔÉÌÙÍ ÁÍÔÉÊÅÉÌÅÍÉÊÙÍ ÁÎÉÙÍ

Artwork Package GK Issue 2.0

: Ï ðáñþí ïäçãüò åîçãåß ôïí ôñüðï ñþóçò ðñïáéñåôéêþí åîùôåñéêþí óõóêåõþí ìå ôïí õðïëïãéóôþ.

ÁñéèìçôéêÞ ÁíÜëõóç É - ÓÅÌÖÅ Åñãáóßá 2 ìåóåò êáé åðáíáëçðôéêýò ìýèïäïé

Á~/99) , Ã2/2864/ êáé Ã2/3850/

Ενότητα 7: Διαδικασιακός Προγραμματισμός

Λογιστικές Εφαρμογές Εργαστήριο

Δομημένος Προγραμματισμός

ΕΝΔΟΣΚΟΠΙΚΕΣ ΚΑΙ ΧΕΙΡΟΥΡΓΙΚΕΣ ΤΕΧΝΙΚΕΣ ΘΕΡΑΠΕΙΑΣ ΚΙΝΗΤΙΚΩΝ ΔΙΑΤΑΡΑΧΩΝ ΓΑΣΤΡΟΟΙΣΟΦΑΓΙΚΗΣ ΣΥΜΒΟΛΗΣ Εκπαιδευτικό Σεμινάριο.

* ΣΧΕΔΙΟ ΕΚΘΕΣΗΣ. EL Eνωμένη στην πολυμορφία EL 2014/0321(NLE)

ÊåöÜëáéï 5 ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ. 5.1 ÅéóáãùãÞ. 56 ÊåöÜëáéï 5. ÄÉÁÍÕÓÌÁÔÉÊÏÉ ÙÑÏÉ

Êáëþò Þëèáôå. Ïäçãüò ãñþãïñçò Ýíáñîçò. ÓõíäÝóôå. ÅãêáôáóôÞóôå. Áðïëáýóôå

5Ô Ô ÚÓÔ. ðüóï 15 ðüóï 1/ ðüóï 2/ ðüóï 4/ ðüóï ðüóï ðüóï. 13 ðüóï 33 ðüóï ðüóï ðüóï. ðüóï 26 ðüóï 2XA ðüóï 3XA ¼ëïé ðüóï

7. ÂáóéêÜ óôïé åßá ðñïãñáììáôéóìïý

245/Á/1977). 2469/1997 (ÖÅÊ 36/Á/1997). 1484/Â/ ).

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

ΠΕΙΡΑΜΑ ΕΦΕΛΚΥΣΜΟΥ. 2. Βασικοί Ορισμοί. P / A o. Ονομαστική ή Μηχανική Τάση P / A. Πραγματική Τάση. Oνομαστική ή Μηχανική Επιμήκυνση L o

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

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

ΜΥΚΟΝΟΣ ΑΝΩ ΜΕΡΑΣ ΑΝΩΝΥΜΟΣ 2 - ΑΝΩΝΥΜΟΣ 8 - ΟΡΙΟ ΟΙΚΙΣΜΟΥ - ΑΝΩΝΥΜΟΣ 3 - ΟΡΙΟ ΟΙΚΙ- ΣΜΟΥ (ΣΗΜΕΙΑ 3, 2, 1) - ΑΝΩΝΥΜΟΣ 2 (ΘΕΣΗ ΜΟΝΑΣΤΗΡΙ)

Chi-Square Goodness-of-Fit Test*

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΓΙΑ ΠΑΡΑΓΓΕΛΙΕΣ: ΔΩΡΟ ΔΩΡΟ ΔΩΡΟ ΔΩΡΟ ΔΩΡΟ ΔΩΡΟ ΔΩΡΟ. 10x. τηλ , fax ,

: Ï ïäçãüò áõôüò ðåñéãñüöåé ôïí ôñüðï ñþóçò êáñôþí åîùôåñéêþí ìýóùí.

Παρουσίαση του εργαλείου. flex. γεννήτρια λεκτικών αναλυτών. για το µάθηµα: Μεταγλωττιστές. Χανιά, flex 1

ΙΣΤΙΟΠΛΟΪΚΟΣ ΑΓΩΝΑΣ : ΑΣΠΡΟΝΗΣΟΣ Ο ΗΓΙΕΣ ΠΛΟΥ

Transcript:

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

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

ËåêôéêÞ áíüëõóç ËåêôéêÝò ìïíüäåò (tokens) Áíáãíùñßæïíôáé ìå ðåðåñáóìýíá áõôüìáôá ðïõ: äéáâüæïõí åíäå ïìýíùò ðåñéóóüôåñïõò áñáêôþñåò ïðéóèïäñïìïýí áí ñåéáóôåß äéáèýôïõí Ýîïäï ðïõ ñçóéìïðïéåßôáé óôç óõíôáêôéêþ áíüëõóç Åéäéêüò óõìâïëéóìüò: äéáãñüììáôá ìåôüâáóçò 4

ÄéáãñÜììáôá ìåôüâáóçò (i) ÁíáãíùñéóôéêÜ ôçò Pascal L 0 L 1 D 5

ÄéáãñÜììáôá ìåôüâáóçò (i) ÁíáãíùñéóôéêÜ ôçò Pascal L 0 L 1 D L L * όχι L/D 0 1 2 (T_id) D 6

ÄéáãñÜììáôá ìåôüâáóçò (ii) ÔåëåóôÝò > êáé >= 0 > 1 = 2 7

ÄéáãñÜììáôá ìåôüâáóçò (ii) ÔåëåóôÝò > êáé >= 0 > 1 = 2 * όχι = 2 (T_gt) 0 > 1 8 = 3 (T_ge)

ÊáôáóêåõÞ ôïõ ËÁ (i) ÊáôáãñáöÞ êáé ôáîéíüìçóç áñáêôþñùí mapping : (ASCII { EOF }) Σ ÊáôáãñáöÞ êáé ôáîéíüìçóç ëåêôéêþí ìïíüäùí Êùäéêïðïßçóç ëåêôéêþí ìïíüäùí Áêïëïõèßá áñáêôþñùí (lexeme) Ó åäßáóç ôïõ äéáãñüììáôïò ìåôüâáóçò Õëïðïßçóç ôïõ ëåêôéêïý áíáëõôþ 9

ÊáôáóêåõÞ ôïõ ËÁ (ii) ÅðéìÝñïõò èýìáôá Ôñüðïò äéá ùñéóìïý ëåêôéêþí ìïíüäùí Ó üëéá ÄéÜêñéóç ðåæþí / êåöáëáßùí ãñáììüôùí ÅíäéÜìåóç ìíþìç (buer) ÁíÜíçøç áðü óöüëìáôá 10

ÊáôáóêåõÞ ôïõ ËÁ (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 11 όχι }

ÊáôáóêåõÞ ôïõ ËÁ (iv) Åíáëëáêôéêïß ôñüðïé õëïðïßçóçò: åéñùíáêôéêü Ìå ðßíáêá ìåôáâüóåùí Ìå ôï ìåôáåñãáëåßï ex 12

(i) Ìåôáåñãáëåßï ex: ãåííþôïñáò ËÁ Åßóïäïò: ìåôáðñüãñáììá ðïõ ðåñéãñüöåé ôéò ëåêôéêýò ìïíüäåò îïäïò: ðñüãñáììá óå C Ç óõíüñôçóç yylex õëïðïéåß ôï ËÁ ÅðéóôñÝöåé ôïí êùäéêü ôçò ëåêôéêþò ìïíüäáò ðïõ áíáãíùñßóôçêå, Þ 0 óôï ôýëïò ôçò óõìâïëïóåéñüò åéóüäïõ Ôïðïèåôåß óôç ìåôáâëçôþ yytext ôçí áíôßóôïé ç áêïëïõèßá áñáêôþñùí (lexeme) 13

(ii) ÄïìÞ ôïõ ìåôáðñïãñüììáôïò ÌÝñïò Á %% ÌÝñïò Â %% ÌÝñïò Ã Êáé ôá ôñßá ìýñç ìðïñïýí íá åßíáé êåíü 14

(iii) ÌÝñïò Á, ðåñéý åé Ó üëéá, üðùò óôç C Êþäéêá C, ìýóá óå %{ êáé %} ÌíçìïíéêÜ ïíüìáôá ùò óõíôïìïãñáößåò êáíïíéêþí åêöñüóåùí Äçëþóåéò áñ éêþí êáôáóôüóåùí 15

(iv) ÌÝñïò Á, ðáñüäåéãìá %{ #define T_eof 0 #define T_id 1... #define T_while 52 void ERROR (const char msg []); %} L [A-Za-z] /* letters */ D [0-9] /* digits */ W [ \t\n] /* white space */ 16

(v) ÌÝñïò Â, ðåñéý åé êáíüíåò ôçò ìïñöþò êáíïíéêþ Ýêöñáóç åíýñãåéá ÊÜèå åíýñãåéá åßíáé ìéá åíôïëþ ôçò C Ëåéôïõñãßá: ÄéáâÜæåôáé ôï ìáêñýôåñï ðñüèåìá ôçò óõìâïëïóåéñüò åéóüäïõ ðïõ ìðïñåß íá áíáãíùñéóôåß áðü êüðïéá êáíïíéêþ Ýêöñáóç Åêôåëåßôáé ç áíôßóôïé ç åíýñãåéá 17

(vi) ÊáíïíéêÝò åêöñüóåéò a Ï áñáêôþñáò a.. ÏðïéïóäÞðïôå áñáêôþñáò åêôüò ôçò áëëáãþò ãñáììþò. \x Áí x Ýíá áðü ôá a, b, f, n, r, t, v Þ 0, ôüôå üðùò óôç C, áëëéþò ï ßäéïò ï áñáêôþñáò x. \123 Ï áñáêôþñáò ASCII ìå ïêôáäéêþ ôéìþ 123. \x3f Ï áñáêôþñáò ASCII ìå äåêáåîáäéêþ ôéìþ 3F. "abc" Ç óõìâïëïóåéñü abc. [abc] íáò áðü ôïõò áñáêôþñåò a, b Þ c. [a-z] íáò áðü ôïõò áñáêôþñåò a Ýùò z. [ac-fs] íáò áðü ôïõò áñáêôþñåò a, c Ýùò f, Þ s. [^a-z] íáò áðü ôïõò áñáêôþñåò åêôüò üóùí áíþêïõí óôçí ðåñéï Þ a Ýùò z. 18

(vii) ÊáíïíéêÝò åêöñüóåéò {name} (óõíý åéá) Ç êáíïíéêþ Ýêöñáóç ìå ìíçìïíéêü üíïìá name. rs Ç ðáñüèåóç ôùí r êáé s. r s Ç äéüæåõîç ôùí r êáé s. (r) Ç êáíïíéêþ Ýêöñáóç r. Ïé ðáñåíèýóåéò ñçóéìïðïéïýíôáé ãéá ïìáäïðïßçóç. r* Ç r åðáíáëáìâüíåôáé ìçäýí Þ ðåñéóóüôåñåò öïñýò. r+ Ç r åðáíáëáìâüíåôáé ìéá Þ ðåñéóóüôåñåò öïñýò. r? Ç r åßíáé ðñïáéñåôéêþ (åðáíáëáìâüíåôáé ìçäýí Þ ìéá öïñü). r{7} Ç r åðáíáëáìâüíåôáé áêñéâþò 7 öïñýò. r{3,5} Ç r åðáíáëáìâüíåôáé áðü 3 Ýùò 5 öïñýò. r{4,} Ç r åðáíáëáìâüíåôáé 4 Þ ðåñéóóüôåñåò öïñýò. 19

(viii) ÊáíïíéêÝò åêöñüóåéò (óõíý åéá) ^r Ç r áëëü ìüíï óôçí áñ Þ ìéáò ãñáììþò. r$ Ç r áëëü ìüíï óôï ôýëïò ìéáò ãñáììþò. <<EOF>> Ôï ôýëïò ôïõ áñ åßïõ åéóüäïõ. r/s Ç êáíïíéêþ Ýêöñáóç r áëëü ìüíï áí áêïëïõèåß ç êáíïíéêþ Ýêöñáóç s. <S>r Ç r áëëü ìüíï üôáí ç ôñý ïõóá áñ éêþ êáôüóôáóç åßíáé ç S. <S 1,S 2,S 3 >r Ç r, áëëü ìüíï üôáí ç ôñý ïõóá áñ éêþ êáôüóôáóç åßíáé ìéá áðü ôéò S 1, S 2 Þ S 3. <*>r Ç r óå ïðïéáäþðïôå áñ éêþ êáôüóôáóç. 20

(ix) ÌÝñïò Â, ðáñüäåéãìá "and" { return T_and; }... "while" { return T_while; } ":=" { return T_assign; } ":" { return T_colon; } {L}({L} {D} _)* { return T_id; } {D}+(\.{D}*(e\-?{D}+)?)? { return T_const; } {W}+ { /* nothing */ } "(*"([^*]+ \*+[^*)])*\*+")" { /* nothing */ } 21. { ERROR("illegal token"); }

(x) ÌÝñïò Ã, ðåñéý åé êþäéêá C ÐáñÜäåéãìá void ERROR (const char msg []) { fprintf(stderr, "ERROR: %s\n", msg); exit(1); } 22

(xi) ÐáñÜäåéãìá int main () { int token; (óõíý åéá) do { token = yylex(); printf("token=%d, lexeme=\"%s\"\n", token, yytext); } while (token!= T_eof); } return 0; 23

(xii) ÐáñÜäåéãìá: Áñßèìçóç ãñáììþí int lineno = 1; [ \t]+ { /* nothing */ } \n { lineno++; } void ERROR (const char msg []) { fprintf(stderr, "ERROR, line %d: %s\n", lineno, msg); exit(1); } Ðñüâëçìá: ËÜèïò áñßèìçóç óå ó üëéá 24

(xiii) Áñ éêýò êáôáóôüóåéò ÊïéíÝò: %s ÁðïêëåéóôéêÝò: %x Åíåñãïß êáíüíåò óå êüðïéá êáôüóôáóç ÌåôÜâáóç ìåôáîý êáôáóôüóåùí: BEGIN(s) Áñ éêþ êáôüóôáóç êáôü ôçí Ýíáñîç ëåéôïõñãßáò ôïõ ËÁ: INITIAL 25

(xiv) ÐáñÜäåéãìá: Áñßèìçóç ãñáììþí (äéüñèùóç) %x COMMENT "(*" { BEGIN(COMMENT); } <COMMENT>"*)" { BEGIN(INITIAL); } <COMMENT>\n { lineno++; } <COMMENT>"*" { /* nothing */ } <COMMENT>[^*\n]+ { /* nothing */ } 26

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.