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



Σχετικά έγγραφα
Παρουσίαση του εργαλείου FLEX

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

/νση: ΧΑΡΑΚΟΠΟΥΛΟΣ ΧΡΗΣΤΟΣ Μ. Αλεξάνδρου 49, 66100, ράµα Τηλ&φαξ: , κιν.: info@akademia.

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

ΕΡΕΥΝΑ ΚΑΤΑΝΑΛΩΤΗ ΑΡΩΜΑΤΙΚΩΝ & ΦΑΡΜΑΚΕΥΤΙΚΩΝ ΒΙΟΚΑΥΣΙΜΩΝ

ΠΟΛΙΤΙΚΉ ΠΑΙΔΕΙΑ. Α Γενικού Λυκείου και ΕΠΑ.Λ. Καζάκου Γεωργία, ΠΕ09 Οικονομολόγος

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

Η εξέλιξη της επιστηµονικής σκέψης και του πειραµατισµού στην Ελληνιστική

Αναλυτικό Πρόγραµµα Σπουδών του Μαθήµατος. Α Τάξη 1 ου Κύκλου Τ.Ε.Ε. 3 ώρες /εβδοµάδα. Αθήνα, Απρίλιος 2001

: Aύξηση φόρου εισοδήµατος, και µείωση µισθών

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΕΣΩΤΕΡΙΚΩΝ ΑΝΑΠΛΗΡΩΤΗΣ ΥΠΟΥΡΓΟΣ Προς: Δημάρχους της Χώρας Αθήνα, 16 Δεκεμβρίου 2013 Α.Π.:2271. Αγαπητέ κ.

«Αναδιάρθρωση της καλλιέργειας του καπνού µε άλλες ανταγωνιστικές καλλιέργειες»

ΑΠΑΝΤΗΣΕΙΣ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ 2014

Μη ανταγωνιστικές δραστηριότητες και παιχνίδια (υλικό)

ΜΑΘΗΜΑ ΣΥΝΕΧΕΙΑ ΣΥΝΑΡΤΗΣΗΣ ΑΣΚΗΣΕΙΣ. Συνέχεια του µαθήµατος 22 Ασκήσεις. 3 η ενότητα 17.

ΤΜΗΜΑ ΗΜΟΣΙΩΝ ΣΧΕΣΕΩΝ & ΕΠΙΚΟΙΝΩΝΙΑΣ

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

ΥΠΟΜΝΗΜΑ ΣΕΒΕ ΣΤΟ ΥΠΟΥΡΓΕΙΟ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΟΙΚΟΝΟΜΙΚΩΝ Θεσσαλονίκη,

Αναλυτικό Πρόγραµµα Σπουδών του Μαθήµατος. Α Τάξη 1 ου Κύκλου Τ.Ε.Ε. 2 ώρες /εβδοµάδα. Αθήνα, Απρίλιος 2001

Σηµειώσεις στις Εµπορικές Εταιρίες

Βασικά σημεία διάλεξης

ΤΙΜΟΛΟΓΙΟ ΜΕΛΕΤΗΣ Τιµαριθµική 2012Γ

Αφήγηση. Βασικά στοιχεία αφηγηµατικού κειµένου:

ΚΕΦΑΛΑΙΟ 8 ΣΥΜΠΕΡΑΣΜΑΤΑ

Στο Δηµόσιο Σχολείο «µας»...

Τρίτη, 23 Μαΐου 2006 Γ ΛΥΚΕΙΟΥ ΓΕΝΙΚΗΣ ΠΑΙ ΕΙΑΣ ΕΚΦΡΑΣΗ - ΕΚΘΕΣΗ ΚΕΙΜΕΝΟ

ΝΟΜΟΣ 3263/2004 (ΦΕΚ 179 Α ) Μειοδοτικό σύστηµα ανάθεσης των δηµοσίων έργων και άλλες διατάξεις

Κίνδυνοι στα σπήλαια

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

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

14.00 µ.µ µ.µ. ένα (1) άτοµα (προετοιµασία παρασκευή) π.µ π.µ. δύο (2) άτοµα (προετοιµασία παρασκευή)

ΚΟΡΙΝΘΟΥ 255, ΚΑΝΑΚΑΡΗ 101 ΤΗΛ , , FAX

Ενότητα 2. Γενικά Οργάνωση Ελέγχου (ΙΙ) Φύλλα Εργασίας Εκθέσεις Ελέγχων

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

ΠΑΝΕΠΙΣΤΗΜΙΟ FREDERICK

ΠΡΟΣ: ΚΟΙΝ: ΘΕΜΑ: Ενηµερωτικό σηµείωµα για το πρόβληµα της παράνοµης υλοτοµίας και ειδικά αυτό της καυσοξύλευσης

Πρακτικό 6/2012 της συνεδρίασης της Επιτροπής Ποιότητας Ζωής, του Δήμου Λήμνου, της 4ης Μαΐου 2012.

Η γενοκτονία των Ποντίων 1 (11)

ΑΣΤΡΟΝΟΜΙΑ ΣΤΗΝ ΑΡΧΑΙΑ ΕΛΛΑΔΑ

ΠΡΟΜΗΘΕΙΑ ΠΡΟΫΠΟΛΟΓΙΣΜΟΣ ΧΡΗΣΗ 2015

ΚΑΝΟΝΙΣΜΟΣ ΤΕΥΧΟΣ ΣΤ ΗΘΙΚΕΣ ΑΜΟΙΒΕΣ ΚΑΙ ΤΙΜΗΤΙΚΕΣ ΙΑΚΡΙΣΕΙΣ

Β ΚΥΚΛΟΣ Τ.Ε.Ε. ΝΕΑ ΕΛΛΗΝΙΚΑ. ΚΕΙΜΕΝΟ Μάριος Πλωρίτης Νέοι, ναρκωτικά, βία

ΕΛΤΙΟ ΤΥΠΟΥ ΕΡΕΥΝΑ ΕΡΓΑΤΙΚΟΥ ΥΝΑΜΙΚΟΥ: Γ ΤΡΙΜΗΝΟ 2014 ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ ΕΛΛΗΝΙΚΗ ΣΤΑΤΙΣΤΙΚΗ ΑΡΧΗ. Πειραιάς, 18 εκεµβρίου 2014

Ενότητα. Μεθοδολογικά ζητήµατα διδασκαλίας της ξένης λογοτεχνίας από µετάφραση Κείµενα για το Ανθολόγιο Νεότερης Ευρωπαϊκής Λογοτεχνίας

ΙΕΘΝΗΣ ΣΥΜΒΑΣΗ ΕΡΓΑΣΙΑΣ 183 «για την αναθεώρηση της (αναθεωρηµένης) σύµβασης για την προστασία της µητρότητας,»

ΟΡΓΑΝΩΣΗ ΕΝΟΤΗΤΩΝ Α ΤΑΞΗΣ ΕΝΟΤΗΤΑ 3

ΚΕΦΑΛΑΙΟ 7 ΣΥΜΠΕΡΑΣΜΑΤΑ ΚΑΙ ΠΡΟΤΑΣΕΙΣ

ΚΑΝΟΝΙΣΜΟΣ ΣΠΟΥ ΩΝ ΤΕΙ ΠΕΙΡΑΙΑ (Απόφαση Συνέλευσης ΤΕΙ αριθ. 5/ , ΦΕΚ 816/ , τ. Β )

ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ «ΚΑΚΟΠΟΙΗΜΕΝΟΙ ΑΝΗΛΙΚΟΙ: ΠΡΟΣΤΑΣΙΑ, ΦΟΡΕΙΣ ΣΤΟ ΠΛΑΙΣΙΟ ΤΗΣ ΕΥΡΩΠΑΪΚΗΣ ΕΝΩΣΗΣ»

ΕΘΝΙΚΗ ΣΧΟΛΗ ΗΜΟΣΙΑΣ ΙΟΙΚΗΣΗΣ ΜΑΘΗΜΑ: ΟΡΓΑΝΩΣΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΚΡΑΤΟΥΣ (ΣΥΝΤΑΓΜΑΤΙΚΟ ΙΚΑΙΟ)


Σηµειώσεις στο ταξινοµούµε

στο σχέδιο νόµου «Διαχείριση των µη εξυπηρετούµενων δανείων, µισθολογικές ρυθµίσεις και άλλες επείγουσες στόχων και διαρθρωτικών µεταρρυθµίσεων»

ΕΓΚΥΚΛΙΟΣ ΓΙΑ ΤΗΝ ΕΦΑΡΜΟΓΗ ΤΟΥ Ν. 3481/2006

Θεσσαλονίκη, 08/11/2011. Αρ. Πρωτ.: Α Κωδ.Εγγρ.: Ε22/250/ΓΚ/1975/γκ

& ../../ , :.. : FAX :... & :...

«Αναδιάρθρωση της καλλιέργειας του καπνού µε άλλες ανταγωνιστικές καλλιέργειες»

ΤΙΤΛΟΣ I ΕΥΡΩΠΑΪΚΑ ΣΧΟΛΕΙΑ

«Πολιτιστικές διαδροµές στα µεταλλευτικά τοπία της Kύθνου»

«Αναδιάρθρωση της καλλιέργειας του καπνού µε άλλες ανταγωνιστικές καλλιέργειες»

ΠΕΡΙΕΧΟΜΕΝΑ Α. ΕΝΑΡΞΗ ΕΡΓΩΝ

ΕΠΙΤΡΟΠΗ ΕΘΝΙΚΗΣ ΑΜΥΝΑΣ ΚΑΙ ΕΞΩΤΕΡΙΚΩΝ ΥΠΟΘΕΣΕΩΝ ΝΟΜΟΣΧΕ ΙΟ. «Στρατολογία των Ελλήνων» Άρθρο 1 Υπόχρεοι σε στράτευση

35η ιδακτική Ενότητα ΕΝΟΧΙΚΕΣ ΣΧΕΣΕΙΣ ( ΕΝΟΧΙΚΟ ΙΚΑΙΟ)

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΝΑΥΠΗΓΩΝ ΜΗΧ/ΓΩΝ ΜΗΧΑΝΙΚΩΝ. ΘΕΜΑ: Προστασία µε επιµεταλλώσεις. Σκαβάρας Παναγιώτης

ΤΙΜΟΛΟΓΙΟ Η/Μ ΕΡΓΑΣΙΩΝ

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

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

ΧΕΙΜΕΡΙΝΟΣ ΤΟΥΡΙΣΜΟΣ ΣΤΗΝ ΕΛΛΑ Α

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

ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ ΕΠΙΤΡΟΠΗ ΑΝΤΑΓΩΝΙΣΜΟΥ Αθήνα, 13 Νοεµβρίου 2012 ΕΛΤΙΟ ΤΥΠΟΥ

Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών

ΒΙΟΛΟΓΙΑ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΓΕΝΙΚΗΣ ΠΑΙ ΕΙΑΣ 2005 ΕΚΦΩΝΗΣΕΙΣ

Οδηγίες Χρήσεως και Εγκατάστασης Ηλεκτρικών Εστιών

Η υποστήριξη της επαγγελματικής μάθησης μέσα από την έρευνα-δράση: διαδικασίες και αποτελέσματα

Αιτιολογική έκθεση Προς τη Βουλή των Ελλήνων

α. Ιδρύεται σύλλογος µε την επωνυµία Ενιαίος Σύλλογος ιδακτικού Προσωπικού

Περιεχόμενα !"#$%&%'(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((( )!

ΑΝΑΚΟΙΝΩΣΗ ΣΟΧ 2/2015 για τη σύναψη ΣΥΜΒΑΣΗΣ ΕΡΓΑΣΙΑΣ ΟΡΙΣΜΕΝΟΥ ΧΡΟΝΟΥ για την υλοποίηση ευρωπαϊκών προγραµµάτων από νοµικά πρόσωπα ΟΤΑ

Α. ΠΕΡΙΓΡΑΦΗ ΜΙΚΡΟΣΚΟΠΙΟΥ Ένα απλό σχολικό µικροσκόπιο αποτελείται από τρία βασικά συστήµατα, το οπτικό, το µηχανικό και το φωτιστικό.

ΝΑΙ ΣΤΗΝ ΕΥΡΩΠΗ - ΟΧΙ ΣΤΗ ΣΥΝΘΗΚΗ ΤΟΥ ΑΜΣΤΕΡΝΤΑΜ

ΔΗΛΩΣΕΙΣ ΣΥΜΜΕΤΟΧΗΣ ΜΕ ΠΡΟΚΛΗΣΗ

Πρώτη διδακτική πρόταση Χρωματίζοντας ένα σκίτσο

Εισαγωγή: ακαδηµαϊκά αδικήµατα και κυρώσεις

ΙΑΧΕΙΡΙΣΗ ΠΡΟΣΒΑΣΕΩΝ ΓΙΑ ΤΗΝ ΠΡΟΣΤΑΣΙΑ ΤΩΝ ΝΕΩΝ Ο ΙΚΩΝ ΑΞΟΝΩΝ

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

ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

Ερµού & Κορνάρου 2 ΤΗΛ: FAX: olme@otenet.gr Αθήνα, 3/3/08 Α.Π.: 656

Αξιολόγηση Προγράμματος Αλφαβητισμού στο Γυμνάσιο Τρίτο Έτος Αξιολόγησης

ΑΠΟΦΑΣΗ 34750/2006 (Αριθμός καταθέσεως πράξεως 43170/2006) ΤΟ ΠΟΛΥΜΕΛΕΣ ΠΡΩΤΟΔΙΚΕΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΔΙΑΔΙΚΑΣΙΑ ΕΚΟΥΣΙΑΣ ΔΙΚΑΙΟΔΟΣΙΑΣ ΣΥΓΚΡΟΤΗΘΗΚΕ από

4 Περίοδοι µε 3ωρα ιαγωνίσµατα ΕΚΤΟΣ ωραρίου διδασκαλίας!!! ΠΡΟΓΡΑΜΜΑ ΙΑΓΩΝΙΣΜΩΝ

ΣΩΜΑ ΠΡΟΣΚΟΠΩΝ ΚΥΠΡΟΥ

Η ΕΛΛΗΝΙΚΗ ΒΙΟΜΗΧΑΝΙΑ ΜΕΤΑΠΟΙΗΣΗ, ΠΑΡΟΧΗ ΗΛΕΚΤΡΙΚΟΥ ΡΕΥΜΑΤΟΣ, ΦΥΣΙΚΟΥ ΑΕΡΙΟΥ ΚΑΙ ΝΕΡΟΥ, ΚΑΤΑΣΚΕΥΕΣ

ΕΝ ΕΙΚΤΙΚΕΣ ΑΠΑΝΤΗΣΕΙΣ

Πολιτική Πρόταση για μια Προοδευτική Διέξοδο Από την Κρίση

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

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

ΕΡΩΤΗΣΗ ΒΟΥΛΕΥΤΩΝ ΤΟΥ ΣΥΡΙΖΑ ΓΙΑ ΤΕΧΝΙΚΕΣ ΕΛΛΕΙΨΕΙΣ ΚΑΙ ΠΑΡΑΒΙΑΣΗ ΝΟΜΟΘΕΣΙΑΣ ΣΤΙΣ ΣΚΟΥΡΙΕΣ

Απομόνωση χλωροφύλλης

ΠΑΡΑΡΤΗΜΑ ΠΡΩΤΟ ΤΗΣ ΕΠΙΣΗΜΗΣ ΕΦΗΜΕΡΙ ΑΣ ΤΗΣ ΗΜΟΚΡΑΤΙΑΣ. Αρ της 25ης ΟΚΤΩΒΡΙΟΥ 2002 ΝΟΜΟΘΕΣΙΑ ΜΕΡΟΣ Ι

Α Ι Τ Η Σ Η ΥΠΕΥΘΥΝΗ ΗΛΩΣΗ

Transcript:

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

Χαρακτηριστικά του flex Γεννήτρια λεκτικών αναλυτών σε C/C++ (fast lexical analyzer generator). Βασισµένο στο εργαλείο του Unix lex. Σχετικά εύκολο στη χρήση. Υψηλές επιδόσεις. Μεγάλη ευελιξία και εκφραστικότητα. Συνεργασία µε γεννήτριες συντακτικών αναλυτών. Λειτουργία του flex Περιγραφή Λεκτικού Αναλυτή flex Λεκτικός Αναλυτής σε C/C++ Βιβλιοθήκη -lfl Μεταγλωττιστής C/C++ Κατασκευή Λεκτικού Αναλυτή Χρήση Λεκτικού Αναλυτή Αρχικό πρόγραµµα Λεκτικός Αναλυτής Λεκτικές Μονάδες flex 2

Μορφή αρχείου περιγραφής Μέρος Α %% Μέρος Β %% Μέρος Γ Περιγραφή µέρους Α Σχόλια ανάµεσα σε /* και */ Κώδικας C/C++ που θα ενσωµατωθεί όπως είναι, ανάµεσα σε %{ και %}, π.χ. %{ %} #define TK_EOF 0 #define TK_ID 1 int linecount = 0; Ορισµοί µνηµονικών ονοµάτων για οικογένειες χαρακτήρων ή κανονικές εκφράσεις, π.χ. letter [A-Za-z] digit [0-9] identifier {letter}({letter} {digit})* Ορισµοί αρχικών καταστάσεων. Οδηγίες προς το flex, π.χ. %option noyywrap flex 3

Περιγραφή µέρους Β Περιέχει κανόνες της µορφής: κανονική-έκφραση ενέργεια εν µπορούν να παρεµβάλλονται σχόλια. Η σύνταξη είναι αυστηρή και µικρές απροσεξίες καταλήγουν σε διαφορετικά αποτελέσµατα. Κώδικας C/C++ ανάµεσα σε %{ και %} στην αρχή του µέρους Β χρησιµεύει για τη δήλωση τοπικών µεταβλητών στη συνάρτηση του λεκτικού αναλυτή yylex(). Default κανόνας ισχύει ακόµη κι αν δεν υπάρχει κανείς αλλος. Περιγραφή µέρους Γ Προαιρετικό (όπως και ο διαχωριστής %%). Περιέχει κώδικα C/C++ που ενσωµατώνεται όπως είναι. Χρησιµεύει συνήθως για τον ορισµό βοηθητικών συναρτήσεων που πρέπει να καλούνται από το λεκτικό αναλυτή (στις ενέργειες του µέρους Β). flex 4

Κανονικές εκφράσεις 1 Έκφραση Ταιριάζει µε (matches) x το χαρακτήρα x \x αν x είναι ένας από τους χαρακτήρες a, b, f, n, r, t, v, την ANSI ερµηνεία του, αλλιώς τον ίδιο το χαρακτήρα x (χρησιµοποιείται για τους ειδικούς χαρακτήρες) \123 το χαρακτήρα µε οκταδική τιµή 123 \x2a το χαρακτήρα µε δεκαεξαδική τιµή 2a. Οποιονδήποτε χαρακτήρα εκτός του (new line). [xyz] έναν από τους χαρακτήρες x, y, z. (κλάση χαρακτήρων) [abm-sx] έναν από τους χαρακτήρες a, b, m ως s, x.(εµβέλεια m s) [^A-Z] Οποιονδήποτε χαρακτήρα εκτός από τους A ως Z. Συµπεριλαµβανοµένου και του \n. r* καµιά ή περισσότερες εµφανίσεις της κανονικής έκφρασης r r+ µια ή περισσότερες εµφανίσεις της κανονικής έκφρασης r r? καµιά ή µια εµφάνιση της κανονικής έκφρασης r (προαιρετικά r) r{2,5} 2 µέχρι 5 εµφανίσεις της κανονικής έκφρασης r. r{2,} 2 ή περισσότερες εµφανίσεις της κανονικής έκφρασης r. r{2} 2 ακριβώς εµφανίσεις της κανονικής έκφρασης r. {name} την επέκταση του µνηµονικού ονόµατος name όπως αυτό ορίζεται στο µέρος Α. "[ab]\"c" (r) τη συµβολοσειρά [ab]"c την κανονική έκφραση r (παράκαµψη προτεραιότητας). flex 5

Κανονικές εκφράσεις 2 Έκφραση Ταιριάζει µε (matches) r s την κανονική έκφραση r ή την s rs Την κανονική έκφραση r ακολουθούµενη από την κανοκή έκφραση s (παράθεση). r/s την κανονική έκφραση r αλλά µόνο όταν ακολουθείται από την κανονική έκφραση s (η οποία δε διαβάζεται στη µεταβλητή yytext). ^r την κανονική έκφραση r αλλά µόνο στην αρχή µιας γραµµής. r$ την κανονική έκφραση r αλλά µόνο στο τέλος µιας γραµµής. <s>r την κανονική έκφραση r αλλά µόνο µε αρχική κατάσταση s. <s1,s2>r την κανονική έκφραση r αλλά µόνο µε αρχική κατάσταση s1 ή s2. <*>r την κανονική έκφραση r µε οποιαδήποτε αρχική κατάσταση. <<EOF>> το τέλος του αρχείου. <s1,s2><<eof>> το τέλος του αρχείου αλλά µόνο µε αρχική κατάσταση s1 ή s2. Ενέργεια Ειδικές ενέργειες Σηµασιολογία ECHO Εκτυπώνει το τµήµα του αρχείου εισόδου που αναγνωρίστηκε. REJECT Απορρίπτει την αναγνώριση που συνέβη και προχωράει στην αµέσως επόµενη δυνατή αναγνώριση. Ίδια µε την ενέργεια του επόµενου κανόνα (για αποφυγή επανάληψης). flex 6

Ένα απλό παράδειγµα %{ #define TK_EOF 0 #define TK_ID 1 #define TK_INT 2 #define TK_FLOAT 3 #define TK_ASSGN 4 %} white letter digit [0-9] dot [\.] [ \n\t] [A-Za-z] sign [\+\-] exp [Ee]{sign}?{digit}{1,3} %% {white}* { /* nothing */ } {letter}({letter} {digit})* { return TK_ID; } ":=" { return TK_ASSGN; } {sign}?{digit}+ { return TK_INT; } {sign}?{digit}+{dot}{digit}*{exp}? {sign}?{digit}*{dot}{digit}+{exp}? { return TK_FLOAT; } %% int main () { int token; } while ((token = yylex())!= TK_EOF) printf("token %d: %s\n", token, yytext); flex 7

Επίδειξη του παραδείγµατος > flex example1.l > gcc -o example1 lex.yy.c -lfl > example1 < example1.tst example1.tst i := 0 abc := -5 e10 := 0.1 i4i := -6.3e-4 jj1 := 4.e+2 123 :=.1e-198 example1 Token 1: i Token 2: 0 Token 1: abc Token 2: -5 Token 1: e10 Token 3: 0.1 Token 1: i4i Token 3: -6.3e-4 Token 1: jj1 Token 3: 4.e+2 Token 2: 123 Token 3:.1e-198 Περισσότερες πληροφορίες και τεκµηρίωση του flex Για περισσότερες πληροφορίες σχετικά µε το flex χρήστης παραπέµπεται στo manual που βρίσκεται στην ιστοσελίδα του µαθήµατος: www.ced.tuc.gr/~manolis/courses/compilers/top.html flex 8

Μεταβλητές και συναρτήσεις του παραγόµενου λεκτικού αναλυτή Σύµβολο int yylex() char * yytext int yyleng void yymore() void yyless(n) int n; FILE * yyin FILE * yyout void yyrestart(f) FILE * f; int input() void unput(c) char c; Macro yyterminate() int yywrap() Περιγραφή Η κύρια συνάρτηση του λεκτικού αναλυτή που παράγεται βάσει του αρχείου περιγραφής. Επιστρέφει έναν ακέραιο αριθµό, που συνήθως αντιστοιχεί σε µια λεκτική µονάδα. Περιέχει το τµήµα του αρχείου εισόδου που αναγνωρίστηκε κατά την τελευταία κλήση της yylex. Περιέχει το πλήθος των χαρακτήρων που περιέχονται στο yytext. ιατηρεί το yytext µεταξύ διαδοχικών κλήσεων της yylex. ιατηρεί στο yytext τους αρχικούς n χαρακτήρες και επιστρέφει τους υπόλοιπους στο αρχείο εισόδου. Το τρέχον αρχείο εισόδου. Το τρέχον αρχείο εξόδου. Χρησιµοποιεί ως τρέχον αρχείο εισόδου το f. ιαβάζει ένα χαρακτήρα από το τρέχον αρχείο εισόδου. Επιστρέφει το χαρακτήρα c στο τρέχον αρχείο εισόδου. Τερµατίζει τη λειτουργία της συνάρτησης yylex επιστρέφοντας 0. Καλείται κάθε φορά που συναντάται τέλος αρχείου. Αν επιστραφεί 1, η λεκτική ανάλυση τερµατίζεται, ενώ αν επιστραφεί 0 συνεχίζει. flex 9

Αρχικές καταστάσεις Επιτρέπουν τον ορισµό ειδικής συµπεριφοράς, ανάλογα µε το τί έχει προηγηθεί κατά την αναγνώριση του αρχείου εισόδου. ιακρίνονται σε εγκλειστικές (inclusive) και αποκλειστικές (exclusive). ηλώνονται στο µέρος Α, µε τις οδηγίες: %s INCLUSIVE %x EXCLUSIVE Στην πραγµατικότητα δεν πρόκειται για ονόµατα αλλά για macros που αντιστοιχούν σε ακέραιες τιµές. Η αρχική κατάσταση ονοµάζεται INITIAL και αντιστοιχεί στην τιµή 0. Η τρέχουσα κατάσταση είναι γνωστή µέσω του macro YY_START. Η τρέχουσα κατάσταση µπορεί να αλλάξει µε την εκτέλεση του macro BEGIN(new). Κανόνες που εξαρτώνται από την τρέχουσα κατάσταση: <SPECIAL>[A-Za-z]+ { ECHO; } ιαφορά εγκλειστικών αποκλειστικών καταστάσεων. flex 10