Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση ΙΙ. Εαρινό Εξάμηνο Lec 07 & & 05/03/2019 Διδάσκων: Γεώργιος Χρ.

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

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

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

Πεπερασμένα Αυτόματα. Πεπερασμένα Αυτόματα. Ορισμός. Παράδειγμα

Σειρά Προβλημάτων 1 Λύσεις

Σειρά Προβλημάτων 2 Λύσεις

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

3.3 Το συναρτησοειδές του Minkowski και μετρικοποιησιμότητα σε τοπικά κυρτούς χώρους. x y E (υποπροσθετικότητα ) ) και p( x) p( x)

Ανοικτά και κλειστά σύνολα

Σειρά Προβλημάτων 2 Λύσεις

Σειρά Προβλημάτων 2 Λύσεις

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

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

Σειρά Προβλημάτων 2 Λύσεις

Συµπάγεια και οµοιόµορφη συνέχεια

και ( n) 1 R. Αν ε > 0, επιλέγουµε για κάθε k 1 ένα καλύπτουµε τότε την ευθεία Α µε την ακολουθία των ορθογωνίων .

Σειρά Προβλημάτων 2 Λύσεις

2.3.9 Ελαχιστοποίηση προσδιοριστικού πεπερασµένου αυτόµατου

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

Αριθµητική Ανάλυση & Προγραµµατισµός Ε ιστηµονικών Εφαρµογών

Περίληψη Προηγούμενου Μαθήματος Κανάλια επικοινωνίας με θόρυβο και η χωρητικότητά τους

Λύσεις σετ ασκήσεων #6

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

3.3 Το συναρτησοειδές του Minkowski και μετρικοποιησιμότητα σε τοπικά κυρτούς χώρους. x y E (υποπροσθετικότητα ) ) και p( x) p( x)

(4) γενικής λύσης το x με το -x. και θα έχουμε : y ομ (x)=c 1 (-x) -1 +c 2 (-x) 3

ΓΡΑΜΜΙΚΑ ΣΥΣΤΗΜΑΤΑ Α ΒΑΘΜΟΥ

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

T.E.I. ΣΤΕΡΕΑΣ ΕΛΛΑΔΑΣ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΤΕ

4.1 Η ΕΝΝΟΙΑ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ

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

3.2 Τοπικά κυρτοί χώροι-βασικές ιδιότητες.

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

ΘΕΩΡΙΑ ΠΑΙΓΝΙΩΝ. Ενότητα 10: Παιχνίδια με ελλιπή πληροφόρηση. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

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

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

Αριθμητική Ανάλυση & Προγραμματισμός Επιστημονικών Εφαρμογών Γουλιάνας Κώστας 2008 Σελίδα 1

6.3 Η ΣΥΝΑΡΤΗΣΗ f(x) = αx + β

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

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

ΚΕΦΑΛΑΙΟ 6 ΑΤΑΚΤΑ ΥΛΙΚΑ

Κεφάλαιο 4: Πυροηλεκτρισμός, Πιεζο- ηλεκτρισμός, Λιαροκάπης Ευθύμιος. Διηλεκτρικές, Οπτικές, Μαγνητικές Ιδιότητες Υλικών

Νόμος του Gauss 1. Ηλεκτρική Ροή ( πλήθος δυναμικών γραμμών). είναι διάνυσμα μέτρου Α και κατεύθυνσης κάθετης στην επιφάνεια. Στην γενική περίπτωση:

1 1 Χ= x x x x x x x x x x. x x x x x

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

Συμπλήρωμα 2 εδαφίου 3.3: Το γενικό μεταβολικό πρόβλημα για συναρτησιακό ολοκληρωτικού τύπου με ολοκληρωτέα συνάρτηση F κατά 2

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

Διάθλαση μέσω οπτικού πρίσματος - Υπολογισμός δείκτη διάθλασης.

Αντλία νερού: Ο ρόλος της αντλίαςμελέτη συμπεράσματα σχόλια.

2 Η ΕΥΘΕΙΑ ΣΤΟ ΕΠΙΠΕΔΟ. Εισαγωγή

( ) y ) άγνωστη συνάρτηση, f (, )

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

Τίτλος Μαθήματος: Γενική Φυσική (Ηλεκτρομαγνητισμός) Διδάσκων: Επίκουρος Καθηγητής Δημήτριος Βλάχος

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

ιάθλαση µέσω οπτικού πρίσµατος - Υπολογισµός δείκτη διάθλασης

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

Γωνία που σχηματίζει η ε με τον άξονα. Έστω Oxy ένα σύστημα συντεταγμένων στο επίπεδο και ε μια ευθεία που τέμνει τον άξονα

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

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

Επεξεργασία Αρχείων Κειµένου

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

ΜΑΘΗΜΑΤΙΚΑ Α ΓΥΜΝΑΣΙΟΥ ΜΕΡΟΣ 2ο ΓΕΩΜΕΤΡΙΑ ΑΣΚΗΣΕΙΣ ΛΥΜΕΝΕΣ 1 ΕΠΙΜΕΛΕΙΑ : ΑΥΓΕΡΙΝΟΣ ΒΑΣΙΛΗΣ

scanf() scanf() stdin scanf() printf() int float double %lf float

Κεφάλαιο 2: Μετάδοση θερμότητας με ΑΚΤΙΝΟΒΟΛΙΑ

όπου n είναι ο συνολικός αριθμός γραμμομορίων του συστήματος (που συμπεριλαμβάνει και τα τυχόν αδρανή συστατικά), Ή ακόμα και τη σύσταση κατά βάρος

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

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

Διαδικασιακός Προγραμματισμός

4.1 ΕΥΘΕΙΕΣ ΚΑΙ ΕΠΙΠΕ Α ΣΤΟ ΧΩΡΟ

Στοιχεία από τη Γεωμετρία του χώρου (αναλυτικά στο βιβλίο: Ευκλείδεια Γεωμετρία Α και Β Ενιαίου Λυκείου)

ΕΛΑΣΤΙΚΟΤΗΤΑ. ε = = Η ελαστικότητα ζήτησης

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

ΤΜΗΜΑ ΕΠΙΧΕΙΡΗΜΑΤΙΚΟΥ ΣΧΕ ΙΑΣΜΟΥ & ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Μάθηµα Τέταρτο-Πέµπτο-Έκτο Πολλαπλό Γραµµικό Υπόδειγµα

ΥΠΟ ΕΙΓΜΑΤΑ TRANSFER

Ο Ρόλος της Ανάδρασης Why Feedback

Κεφάλαιο 7 ΗΛΕΚΤΡΙΚΑ ΚΥΚΛΩΜΑΤΑ ΣΥΝΕΧΟΥΣ ΡΕΥΜΑΤΟΣ

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

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

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

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

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

Αλγόριθμοι για αυτόματα

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Σχεδίαση Γλωσσών Προγραμματισμού Συντακτική Ανάλυση Ι. Εαρινό Εξάμηνο Lec /03/2019 Διδάσκων: Γεώργιος Χρ. Μακρής

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

ΠΕΡΙΒΑΛΛΟΝΤΙΚΗ Υ ΡΑΥΛΙΚΗ

ΜΑΘΗΜΑ: ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙ ΕΙΑΣ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

III. ΙΑΧΥΣΗ ΙΑΣΠΟΡΑ ΣΕ Ι ΙΑΣΤΑΤΑ ΣΥΣΤΗΜΑΤΑ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

Σχεδίαση Γλωσσών Προγραμματισμού Λεξική Ανάλυση Ι. Εαρινό Εξάμηνο Lec 05 & & 26 /02/2019 Διδάσκων: Γεώργιος Χρ.

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

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

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

Transcript:

Σχδίαση Γλωσσών Προγραμματισμού Λξική Ανάλυση ΙΙ Εαρινό Εξάμηνο 2018-2019 Lec 07 & 08 04 & 05/03/2019 Διδάσκων: Γώργιος Χρ. Μακρής

Γννήτρις λξικής ανάλυσης (scanner generators)

Λιτουργία Λξικού Αναλυτή

Κανονικές κφράσις στον Flex

Γννήτρις λξικών αναλυτών Ι Ορισμός αναγνωριστικών μ κανονικές κφράσις Μτάφραση Κ.Ε. σ αυτόματα Χρήση ππρασμένων αυτόματων για τη δημιουργία κώδικα λξικής ανάλυσης Πηγαίος κώδικας Ορισμοί (κανονικών κφράσων) Λ. Α. Γννήτρια Λ.Α. αναγνωριστικά κώδικας Λ.Α.

Γννήτρις λξικών αναλυτών ΙΙ Για τη χρήση γννήτριας κώδικα λξικής ανάλυσης: Συντάσσουμ το αρχίο πριγραφής το λξικού αναλυτή: %{ /* πρόγραμμα αρίθμησης των γραμμών νός κιμένου */ #include <stdio.h> int lineno = 1; %} line.*\n %% {line} {printf( %5d %s, lineno++, yytext);} %% void main() { yylex();}

2.4 Γννήτρις λξικών αναλυτών Το αρχίο πριγραφής διοχτύται ως ίσοδος στη γννήτρια κώδικα λξικής ανάλυσης. Ο κώδικας που προκύπτι ως αποτέλσμα πριλαμβάνται στο αρχίο lexyy.c ή lex.yy.c και πριλαμβάνι σίγουρα τη συνάρτηση λξικής ανάλυσης yylex(). Αν το αρχίο πριγραφής πριλαμβάνι συνάρτηση main(), τότ το πρόγραμμα που παράχθηκ μπορί να λιτουργήσι αυτόνομα και για να γίνι αυτό πρέπι να πράσι από ένα μταγλωττιστή της C. Αν όχι, τότ για να χρησιμοποιηθί ο παραγόμνος κώδικας στο πλαίσιο νός άλλου προτος (μταγλωττιστής) χριάζται να συμπριληφθί μ την οδηγία #include lexyy.c

2.4 Γννήτρις λξικών αναλυτών ΔΟΜΗ ΑΡΧΕΙΟΥ ΠΕΡΙΓΡΑΦΗΣ ΛΕΞΙΚΗΣ ΑΝΑΛΥΣΗΣ ορισμοί %% κανόνς αναγνώρισης %% βοηθητικές συναρτήσις Στους ορισμούς πριλαμβάνονται: Κώδικας, ο οποίος δν ανήκι σ συγκκριμένς συναρτήσις και ίναι πιθυμητή η συμπρίληψή του στον παραγόμνο λξικό αναλυτή. Ο κώδικας αυτός μφανίζται ανάμσα στους ιδικούς χαρακτήρς {% και %} και προηγίται του χαρακτήρα %%, που διαχωρίζι το πρώτο από το δύτρο μέρος της πριγραφής. Ορισμοί ονομάτων κανονικών κφράσων. Κάθ ένα από αυτά ορίζται σ ξχωριστή γραμμή, όπου προηγίται το όνομα και μτά από ένα ή πρισσότρα κνά ακολουθί η κανονική έκφραση από την οποία πριγράφται.

2.4 Γννήτρις λξικών αναλυτών Στο δύτρο μέρος του αρχίου πριγραφής του λξικού αναλυτή πριλαμβάνονται οι κανόνς αναγνώρισης διατυπωμένοι στη μορφή, p 1 {νέργια 1 } p 2 {νέργια 2 }...... p n {νέργια n } όπου κάθ p i ίναι μία κανονική έκφραση και κάθ νέργια i ίναι μία ή πρισσότρς ντολές της C, που κτλούνται, κάθ φορά, που ντοπίζται η αντίστοιχη λξική μονάδα. Στο τλυταίο μέρος της πριγραφής του λξικού αναλυτή πριλαμβάνονται οι όποις συναρτήσις καλούνται από το δύτρο μέρος και δν ορίζονται αλλού. Αν θέλουμ το αποτέλσμα της πξργασίας της γννήτριας να λιτουργί ως αυτόνομο πρόγραμμα, τότ στο μέρος αυτό πριλαμβάνται και η συνάρτηση main().

2.4 Γννήτρις λξικών αναλυτών Η ντολή return πιστρέφι στο συντακτικό αναλυτή το αναγνωριστικό της τλυταίας λξικής μονάδας, που αναγνωρίσθηκ. Για την πιστροφή τιμών ιδιοτήτων της λξικής μονάδας, μπορί να χρησιμοποιηθί η σωτρική μταβλητή yylval της γννήτριας. Ακόμη, ίναι ιδιαίτρα χρήσιμη και η char * yytext, όπου αποθηκύται προσωρινά η συμβολοσιρά της λξικής μονάδας, που αναγνωρίσθηκ.

2.4 Γννήτρις λξικών αναλυτών YYTYPE yylval char * yytext int yyleng FILE * yyin FILE * yyout int yylex() Η μταβλητή μέσω της οποίας πικοινωνί ο λξικός αναλυτής μ το συντακτικό αναλυτή. Ο προκαθορισμένος τύπος YYTYPE ίναι int, αλλά ο χρήστης μπορί να τον ορίσι σύμφωνα μ τις ανάγκς του στο πρώτο μέρος της πριγραφής του λξικού ή του συντακτικού αναλυτή. Η τιμή της μταβλητής yylval, πρέπι να νημρώνται, όποτ αυτή χριάζται, στα τμήματα κώδικα action i του δυτέρου μέρους της πριγραφής. Η μταβλητή αυτή παρέχι έναν προσωρινό χώρο αποθήκυσης της συμβολοσιράς, που αντιστοιχί στη λξική μονάδα που αναγνωρίσθηκ. Είναι ιδιαίτρα χρήσιμη κατά την αναγνώριση ονομάτων και σταθρών. Η τιμή της κφράζι το μήκος της λξικής μονάδας, που αναγνωρίσθηκ. Η τιμή της παρέχι ένα δίκτη στο αρχίου ισόδου του λξικού αναλυτή (προκαθορισμένη τιμή: stdin). Η τιμή της παρέχι ένα δίκτη στο αρχίου ξόδου του λξικού αναλυτή (προκαθορισμένη τιμή: stdout). Η παραγόμνη συνάρτηση λξικής ανάλυσης. Επιστρέφι το αναγνωριστικό της λξικής μονάδας, που διαβάζι.

2.4 Γννήτρις λξικών αναλυτών register int input() void yymore() void yyless(in t n) ECHO Επιστρέφι τον πόμνο χαρακτήρα της συμβολοσιράς ισόδου, στο λξικό αναλυτή. Επιτρέπι στο λξικό αναλυτή να προχωρήσι στην αναγνώριση της πόμνης λξικής μονάδας, διατηρώντας στην yytext τη συμβολοσιρά της λξικής μονάδας, που αναγνωρίσθηκ τλυταία. Οπισθοδρόμηση n χαρακτήρων στη συμβολοσιρά ισόδου της λξικής ανάλυσης. Εκτυπώνι την yytext στο yyout.

2.4 Γννήτρις λξικών αναλυτών λξική μονάδα πριοχή νδιάμσης αποθήκυσης ππρασμένο αυτόματο πίνακας μταβάσων

2.4 Γννήτρις λξικών αναλυτών ΠΑΡΑΔΕΙΓΜΑ: %{ /* πρόγραμμα αναπαραγωγής γραμμών που αρχίζουν ή καταλήγουν στο χαρακτήρα a */ #include <stdio.h> %} ends_with_a begins_with_a %% {ends_with_a} {begins_with_a}.*\n; %% void main() { yylex();}.*a\n a.*\n ECHO; ECHO;

2.3 Λξική Ανάλυση και Αυτόματα κανονική έκφραση για την αναγνώριση ονομάτων: όνομα = {}({} {})* αντίστοιχο προσδιοριστικό ππρασμένο: αρχή όνομα διαχωριστής τέλος Γιατί μτατρέπουμ τις κανονικές κφράσις σ αυτόματα; Επιδή οι μηχανές ππρασμένων καταστάσων μας παρέχουν ένα θωρητικό πλαίσιο και πλήθος αλγορίθμων για την ανάπτυξη αλγορίθμων αναγνώρισης της γλώσσας των κφράσων.

2.3 Λξική Ανάλυση και Αυτόματα ΙΙ πλήρς προσδιοριστικό αυτόματο για ονόματα: αρχή όνομα διαχωριστής τέλος άλλο λάθος ΣΥΜΒΑΣΕΙΣ: οτιδήποτ Δν απικονίζουμ τις καταστάσις λάθους. Χρησιμοποιούμ διπλό κύκλο για τις καταστάσις κατάληξης.

2.3 Λξική Ανάλυση και Αυτόματα ΙΙI ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ ΠΕΠΕΡΑΣΜΕΝΟ ΑΥΤΌΜΑΤΟ Ένα προσδιοριστικό ππρασμένο αυτόματο M αποτλίται από ένα αλφάβητο Σ, ένα σύνολο καταστάσων S, μία συνάρτηση μτάβασης T : S S, μία αρχική κατάσταση s 0 S και ένα σύνολο A S από καταστάσις κατάληξης. Γλώσσα του Μ ίναι το σύνολο L(M), των συμβολοσιρών, που απαρτίζονται από χαρακτήρς c 1 c2... cn, μ c i, τέτοιους ώστ να υπάρχουν οι καταστάσις s = T s, ), s = T s, ),..., s = T s, c ), όπου sn ίναι 1 ( 0 c1 μία κατάληξη ( s n A). 2 ( 1 c2 n ( n 1 n

2.3 Λξική Ανάλυση και Αυτόματα IV ΠΑΡΑΔΕΙΓΜΑΤΑ φυσικός = [0-9]+ ακέραιος = (+ -)?{φυσικός} αριθμός = {ακέραιος}(. {φυσικός})? (E {ακέραιος})? αρχή φυσικός διαχωριστής τέλος αρχή + πρόσημο ακέραιος διαχωριστής τέλος -

2.3 Λξική Ανάλυση και Αυτόματα V τέλος + αρχή πρ_ακρ - διαχωριστής διαχωριστής διαχωριστής + πραγμ_ακ. δκαδικός E πραγμ_δ κθτικός πρ_κθτ πραγμ_κ Αυτόματο για τα σχόλια στη C: E - άλλος * αρχή / άνοιγμα * κίμνο * κλίσιμο / τέλος άλλος

2.3 Λξική Ανάλυση και Αυτόματα VI ΠΡΟΣΟΜΟΙΩΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΌΜΑΤΩΝ Έστω το αυτόματο αρχή όνομα διαχωριστής τέλος και ο πίνακας μτάβασης, διαχωριστής καταλήξις «αρχή» «όνομα» ΟΧΙ «όνομα» «όνομα» «όνομα» «τέλος» ΟΧΙ «τέλος» ΝΑΙ που κφράζι τη συνάρτηση μτάβασης του αυτόματου και δηλώνι τις καταστάσις κατάληξης

2.3 Λξική Ανάλυση και Αυτόματα VIΙ ΠΡΟΣΟΜΟΙΩΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΌΜΑΤΩΝ Αλγόριθμος προσομοίωσης αυτόματων Είσοδος: Μία συμβολοσιρά ισόδου, ένας πίνακας μτάβασης Τ και ένας πίνακας KA λογικών τιμών, που δηλώνουν τις καταλήξις του αυτόματου Έξοδος: Το αν η συμβολοσιρά ισόδου ανήκι στη γλώσσα του αυτόματου ή όχι Πριγραφή: κατάσταση:= «αρχή»; ch:= ο πόμνος χαρακτήρας ισόδου; Όσο ((όχι ΚΑ[κατάσταση]) ΚΑΙ (όχι Τ[κατάσταση, ch] κνό)) πανέλαβ νέα_κατάσταση:= Τ[κατάσταση, ch]; ch:= ο πόμνος χαρακτήρας ισόδου; κατάσταση:= νέα_κατάσταση; Τέλος πανάληψης αν (ΚΑ[κατάσταση]) τότ συμβολοσιρά αποδκτή; διαφορτικά συμβολοσιρά μη αποδκτή;

2.3 Λξική Ανάλυση και Αυτόματα VIΙΙ ΠΡΟΣΟΜΟΙΩΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΌΜΑΤΩΝ Αλγόριθμος υπολογισμού πίνακα μτάβασης νός αυτόματου Είσοδος: Ένα πρότυπο αναγνώρισης P Έξοδος: Ο πίνακας μτάβασης του αυτόματου που παράγται από το πρότυπο P Πριγραφή: m:= μήκος(p); Για (s:=0 μέχρι m) πανέλαβ Για (κάθ a ) πανέλαβ k:=min(m+1, s+2); Επανέλαβ k:=k-1; μέχρι (το strcat(πρόθμα του P που έχι αναγνωρισθί στο s, α) ταυτίζται μ τους k πρώτους χαρακτήρς του P) Τ[s, α]:=k; Τέλος πανάληψης Τέλος πανάληψης

2.3 Λξική Ανάλυση και Αυτόματα ΙΧ ανάπτυξη Thompson Κανονική έκφραση συντακτική ανάλυση Παράγωγο δένδρο Μη προσδιοριστικό αυτόματο αναγνώριση συμβολοσιρών ανάπτυξη Glushkov ανάπτυξη υποσυνόλων Προσδιοριστικό αυτόματο

2.3 Λξική Ανάλυση και Αυτόματα Χ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ Στα μη προσδιοριστικά ππρασμένα αυτόματα, το αλφάβητο Σ πκτίνται, έτσι ώστ να συμπριλαμβάνι τη μτάβαση-, η οποία πραγματοποιίται χωρίς την ανάγνωση κάποιου χαρακτήρα της συμβολοσιράς ισόδου. Οι μταβάσις- ίναι απαραίτητς, τόσο στην άμση αναπαράσταση της κνής συμβολοσιράς, όσο και στην αναπαράσταση της πιλογής μταξύ διαφορτικών ναλλακτικών πριπτώσων. Μία άλλη πέκταση, σ σχέση μ τον ορισμό των προσδιοριστικών ππρασμένων αυτομάτων, ίναι η πέκταση της συνάρτησης μτάβασης T, έτσι ώστ, για κάθ χαρακτήρα, να ίναι δυνατή η πιθανότητα μτάβασης σ πρισσότρς από μία καταστάσις. Λέμ τότ ότι το πδίο τιμών της συνάρτησης Τ ίναι το δυναμοσύνολο του συνόλου καταστάσων S και αυτό συμβολίζται μ (S).

2.3 Λξική Ανάλυση και Αυτόματα ΧI ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ Ένα μη προσδιοριστικό ππρασμένο αυτόματο M αποτλίται από ένα αλφάβητο Σ, ένα σύνολο καταστάσων S, μία συνάρτηση μτάβασης T : S ( { }) ( S), μία αρχική κατάσταση s 0 S και ένα σύνολο A S από καταστάσις κατάληξης. Γλώσσα του Μ ίναι το σύνολο L(M), των συμβολοσιρών, που απαρτίζονται από χαρακτήρς c 1 c2... cn, μ c { }, τέτοιους ώστ να υπάρχουν οι καταστάσις s T s, ), i 2 ( 1 c2 1 ( 0 c1 s T s, ),..., s T s, c ), όπου sn ίναι μία κατάληξη ( s n A). n ( n 1 n Τα μη προσδιοριστικά αυτόματα χρησιμύουν, ως νδιάμση μορφή αναπαράστασης, για δινέργια λξικής ανάλυσης. Κάθ κανονική έκφραση μτατρέπται, από ένα κατάλληλο αλγόριθμο, σ μη προσδιοριστικό αυτόματο, που αναγνωρίζι τη γλώσσα της έκφρασης. Το αυτόματο μ τη σιρά του μτατρέπται μ τη χρήση νός άλλου αλγορίθμου, σ προσδιοριστικό και ακολουθί λαχιστοποίηση του αριθμού των καταστάσών του.

2.3 Λξική Ανάλυση και Αυτόματα ΧΙI ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ όνομα = {}({} {})* 5 6 1 2 3 4 9 10 7 8

2.3 Λξική Ανάλυση και Αυτόματα ΧΙII ΜΕΤΑΤΡΟΠΗ ΚΑΝΟΝΙΚΩΝ ΕΚΦΡΑΣΕΩΝ ΣΕ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ (ΑΝΑΠΤΥΞΗ THOMPSON) Γίνται συντακτική ανάλυση της κανονικής έκφρασης. Κατασκυάζονται τα αυτόματα που αντιστοιχούν σ κάθ μία από τις στοιχιώδις κανονικές κφράσις που προκύπτουν. i τέλος i a τέλος Αν θωρήσουμ M(r) και M(s) τα αυτόματα των κφράσων r και s, τότ το αυτόματο M(r s) ίναι το: M(r) i τέλος M(s)

2.3 Λξική Ανάλυση και Αυτόματα ΧΙV ΜΕΤΑΤΡΟΠΗ ΚΑΝΟΝΙΚΩΝ ΕΚΦΡΑΣΕΩΝ ΣΕ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ (ΑΝΑΠΤΥΞΗ THOMPSON) Για την κανονική έκφραση rs παράγται το αυτόματο M(rs): i M(r) M(s) τέλος Για την κανονική έκφραση r* παράγται το αυτόματο Μ(r*): i M(r) τέλος Για την κανονική έκφραση (r) χρησιμοποιίται το αυτόματο Μ(r).

2.3 Λξική Ανάλυση και Αυτόματα XV ΜΕΤΑΤΡΟΠΗ ΚΑΝΟΝΙΚΩΝ ΕΚΦΡΑΣΕΩΝ ΣΕ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ (ΠΑΡΑΔΕΙΓΜΑ) όνομα = {}({} {})* r 7 το δένδρο που προκύπτι από τη συντακτική ανάλυση της έκφρασης ίναι το r 1 r 6 r 5 * r 4 ( ) r 2 r 3

Αναπτυξη Thompson της κανονικής έκφρασης {}({} {})*

2.3 Λξική Ανάλυση και Αυτόματα ΧVI ΜΕΤΑΤΡΟΠΗ ΚΑΝΟΝΙΚΩΝ ΕΚΦΡΑΣΕΩΝ ΣΕ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΑ ΑΥΤΟΜΑΤΑ (ΣΥΝΕΧΕΙΑ ΠΑΡΑΔΕΙΓΜΑΤΟΣ) το μη προσδιοριστικό αυτόματο, που προκύπτι μ ανάπτυξη Thompson ίναι το 5 6 1 2 3 4 9 10 7 8

2.3 Λξική Ανάλυση και Αυτόματα ΧVII ΜΕΤΑΤΡΟΠΗ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟΥ ΑΥΤΟΜΑΤΟΥ ΣΕ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ (ΑΝΑΠΤΥΞΗ ΥΠΟΣΥΝΟΛΩΝ) Οι καταστάσις του προσδιοριστικού αυτόματου, που προκύπτι ως αποτέλσμα, ίναι υποσύνολα των καταστάσων του μη προσδιοριστικού αυτόματου. Δύο καταστάσις «p» και «q» του αρχικού μη προσδιοριστικού αυτόματου ανήκουν στο ίδιο υποσύνολο αν για κάποιο χαρακτήραπρότυπο οι μταβάσις του μη προσδιοριστικού αυτόματου οδηγούν ίτ στην «p», ίτ στην «q». Αν υπάρχι μία μτάβαση από την κατάσταση «p» στην «q» μέσω του χαρακτήρα πρότυπο a και μία μτάβαση- από την «q» στην «u», τότ οι καταστάσις «q» και «u» ανήκουν στο ίδιο υποσύνολο καταστάσων.

2.3 Λξική Ανάλυση και Αυτόματα ΧVIII ΜΕΤΑΤΡΟΠΗ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟΥ ΑΥΤΟΜΑΤΟΥ ΣΕ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ (ΑΝΑΠΤΥΞΗ ΥΠΟΣΥΝΟΛΩΝ) Συμβολίζουμ μ reach(f, c i ) το σύνολο όλων των καταστάσων, που ίναι προσβάσιμς από τις καταστάσις του F μέσω μιας μτάβασης μ πιγραφή c i. Συμβολίζουμ μ succ(f), το σύνολο των καταστάσων, που ίναι προσβάσιμς από το F, μτά από ππρασμένο αριθμό μταβάσων-. Θωρούμ ως νέα κατάσταση του προσδιοριστικού αυτόματου, το σύνολο succ({«αρχή»}). Για την κατάσταση αυτή και για κάθ νέο υποσύνολο F S, το σύνολο των προσβάσιμων καταστάσων, μέσω μιας μτάβασης μ πιγραφή a, δίνται ως succ(reach(f,a)). Ο αλγόριθμος συνχίζι για όλους τους χαρακτήρς a Σ. Μία νέα κατάσταση ίναι κατάληξη, αν το υποσύνολο καταστάσων στο οποίο αντιστοιχί, πριέχι μία κατάληξη του μη προσδ. αυτόματου.

2.3 Λξική Ανάλυση και Αυτόματα ΧIX ΜΕΤΑΤΡΟΠΗ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟΥ ΑΥΤΟΜΑΤΟΥ ΣΕ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ (ΑΝΑΠΤΥΞΗ ΥΠΟΣΥΝΟΛΩΝ) παράδιγμα 5 6 1 2 3 4 9 10 7 8 {4,5,6,7,9,10} {1} {2,3,4,5,7,10} {4,5,7,8,9,10}

2.3 Λξική Ανάλυση και Αυτόματα ΧX ΜΕΤΑΤΡΟΠΗ ΜΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟΥ ΑΥΤΟΜΑΤΟΥ ΣΕ ΠΡΟΣΔΙΟΡΙΣΤΙΚΟ (ΑΝΑΠΤΥΞΗ ΥΠΟΣΥΝΟΛΩΝ) αλγόριθμος Είσοδος: Ένα μη προσδιοριστικό ππρασμένο αυτόματο Μ Έξοδος: Ένα προσδιοριστικό ππρασμένο αυτόματο D μ γλώσσα L(M) Πριγραφή: Ο αλγόριθμος κατασκυάζι τον πίνακα μταβάσων Τ, του D. Οι καταστάσις και οι μταβάσις, που προστίθνται στο αυτόματο D, υπολογίζονται ως ξής: Η μοναδική κατάσταση του D ίναι η succ({«αρχή»}), που δν έχι ακόμη πιλγί. Όσο (υπάρχι κάποια μη πιλγμένη κατάσταση ) πανέλαβ Τέλος πανάληψης Μ. πέλξ την p; Για (κάθ χαρακτήρα ) πανέλαβ q:= succ(reach(p,a)); αν (q D) τότ T(p,a):=q; Τέλος πανάληψης προσέθσ την q στο D; Μία κατάσταση του D γίνται κατάληξη, αν το αντίστοιχο σύνολο των καταστάσων πριέχι τουλάχιστο μία κατάληξη του

2.3 Λξική Ανάλυση και Αυτόματα ΧXI ΕΛΑΧΙΣΤΟΠΟΙΗΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΟΜΑΤΩΝ Τα προσδιοριστικά αυτόματα, που προκύπτουν ως αποτέλσμα μιας διαδικασίας ανάπτυξης υποσυνόλων, χαρακτηρίζονται συχνά από μγάλους πίνακς μταβάσων. Αυτό οφίλται στην αύξηση του αριθμού των καταλήξων. Έχι αποδιχθί ότι για δοθέν προσδιοριστικό αυτόματο, υπάρχι ένα μοναδικό ισοδύναμο αυτόματο μ τον λάχιστο αριθμό καταστάσων. Ο αλγόριθμος των Hopcroft & Ullman παράγι το λάχιστο αυτόματο, διαιρώντας τις καταστάσις του αρχικού σ σύνολα, έτσι ώστ όλς οι καταστάσις του ίδιου συνόλου να αναγνωρίζουν τις ίδις συμβολοσιρές.

2.3 Λξική Ανάλυση και Αυτόματα ΧXII ΕΛΑΧΙΣΤΟΠΟΙΗΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΟΜΑΤΩΝ Λέμ ότι σ ένα αυτόματο, μία συμβολοσιρά w διακρίνι την κατάσταση «s» από την κατάσταση «t», αν ξκινώντας από την «s» και διοχτύοντας την w, οδηγούμαστ σ κατάλήξη, νώ δ συμβαίνι το ίδιο μ την κατάσταση «t». Η συμβολοσιρά διακρίνι τις καταλήξις από τις υπόλοιπς καταστάσις του αυτόματου. Αρχικά διακρίνουμ το χώρο των καταστάσων σ καταλήξις και μη καταλήξις. Σταδιακά συγκροτούνται σύνολα καταστάσων, έτσι ώστ για κάθ ζύγος καταστάσων από διαφορτικά σύνολα, αυτές να έχουν διακριθί από κάθ συμβολοσιρά ισόδου, νώ για κάθ ζύγος καταστάσων του ίδιου συνόλου να μην έχι συμβί ακόμη κάτι τέτοιο.

2.3 Λξική Ανάλυση και Αυτόματα ΧXIII (+ -)? {} {}* + 1 0-2 3 Πρέπι να συμπριλάβουμ και την κατάσταση «λάθος» 0 1 2 3 «λάθος»

2.3 Λξική Ανάλυση και Αυτόματα ΧXIV Στη συνέχια παρατηρούμ ότι 0 3 και «λάθος» «λάθος». Εφόσον όμως για τις καταστάσις 3 και «λάθος» έχι ήδη καταγραφί στον πίνακα ότι διακρίνονται μταξύ τους, συνάγται το ίδιο και για τις 0 και «λάθος». 0 1 2 3 «λάθος» Η διαδικασία συμπλήρωσης του πίνακα συνχίζται μέχρι το σημίο κίνο στο οποίο δν ίναι δυνατή η ύρση νέου ζύγους καταστάσων, που διακρίνονται από κάποιο χαρακτήρα ισόδου.

2.3 Λξική Ανάλυση και Αυτόματα ΧXV 0 1 2 3 «λάθος» Διαπιστώνται ότι τλικά μόνο οι καταστάσις 1 και 2 ανήκουν στην ίδια κλάση ισοδυναμίας. Μτονομάζουμ την κατάσταση 2 σ 1 και τλικά παίρνουμ το λάχιστο αυτόματο του σχήματος + 0-1 3

2.3 Λξική Ανάλυση και Αυτόματα ΧXVΙ ΕΛΑΧΙΣΤΟΠΟΙΗΣΗ ΠΡΟΣΔΙΟΡΙΣΤΙΚΩΝ ΠΕΠΕΡΑΣΜΕΝΩΝ ΑΥΤΟΜΑΤΩΝ (παράδιγμα) {4,5,6,7,9,10} {1} {2,3,4,5,7,10} {4,5,7,8,9,10} Οι μταβάσις όλων των καταλήξων οδηγούν σ καταλήξις, τόσο για την πρίπτωση, που ο χαρακτήρας ισόδου ίναι, όσο και στην πρίπτωση, που αυτός ίναι. Άρα οι τρις καταλήξις δ διακρίνονται από κανένα χαρακτήρα. 1 2