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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Μικροβιολογία & Υγιεινή Τροφίμων

Υπολογιστές Ι. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Ηλεκτρονικοί Υπολογιστές I

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Ηλεκτρισμός & Μαγνητισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Ηλεκτρισμός & Μαγνητισμός

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

ΓΕΝΙΚΗ ΚΑΙ ΑΝΟΡΓΑΝΗ ΧΗΜΕΙΑ

Εκκλησιαστικό Δίκαιο

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

Βασικές Αρχές Φαρμακοκινητικής

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εφαρμοσμένη Στατιστική

Ηλεκτρονικοί Υπολογιστές IV

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Πιθανότητες. Συνδυαστική Ανάλυση Διδάσκων: Επίκουρος Καθηγητής Κωνσταντίνος Μπλέκας

Αξιολόγηση μεταφράσεων ιταλικής ελληνικής γλώσσας

Γενικά Μαθηματικά Ι. Ενότητα 17: Αριθμητική Ολοκλήρωση, Υπολογισμός Μήκους Καμπύλης Λουκάς Βλάχος Τμήμα Φυσικής ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Ηλεκτρονικοί Υπολογιστές IV

Εκκλησιαστικό Δίκαιο

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Λογισμός 3. Ενότητα 19: Θεώρημα Πεπλεγμένων (γενική μορφή) Μιχ. Γ. Μαριάς Τμήμα Μαθηματικών ΑΝΟΙΚΤΑ ΑΚΑ ΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Οικονομετρία. Εξειδίκευση του υποδείγματος. Μορφή της συνάρτησης: Πολυωνυμική, αντίστροφη και αλληλεπίδραση μεταβλητών

Εισαγωγή στους Αλγορίθμους

Ηλεκτρονικοί Υπολογιστές I

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Μιγαδικός λογισμός και ολοκληρωτικοί Μετασχηματισμοί

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Κβαντική Θεωρία ΙΙ. Σωμάτιο σε Ηλεκτρομαγνητικό Πεδίο Διδάσκων: Καθ. Λέανδρος Περιβολαρόπουλος

Εφαρμοσμένη Στατιστική

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

Μαθηματικά και Φυσική με Υπολογιστές

Ηλεκτρισμός & Μαγνητισμός

Εισαγωγή στους Αλγορίθμους

Εφαρμοσμένη Στατιστική

Ηλεκτρονικοί Υπολογιστές

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Παράκτια Τεχνικά Έργα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Μιγαδικός λογισμός και ολοκληρωτικοί Μετασχηματισμοί

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

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

Ηλεκτρονικοί Υπολογιστές I

Γενικά Μαθηματικά Ι. Ενότητα 14: Ολοκλήρωση Κατά Παράγοντες, Ολοκλήρωση Ρητών Συναρτήσεων Λουκάς Βλάχος Τμήμα Φυσικής

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Οικονομία των ΜΜΕ. Ενότητα 7: Μορφές αγοράς και συγκέντρωση των ΜΜΕ

ΜΑΘΗΜΑ: Μεταγλωττιστές

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Πιθανότητες. Συναρτήσεις πολλών μεταβλητών Διδάσκων: Επίκουρος Καθηγητής Κωνσταντίνος Μπλέκας

Ηλεκτρισμός & Μαγνητισμός

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Γενικά Μαθηματικά Ι. Ενότητα 1: Συναρτήσεις και Γραφικές Παραστάσεις. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Ηλεκτρισμός & Μαγνητισμός

Οδοποιία IΙ. Ενότητα 14: Υπόδειγμα σύνταξης τευχών θέματος Οδοποιίας. Γεώργιος Μίντσης ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Εκκλησιαστικό Δίκαιο

Αξιολόγηση μεταφράσεων ιταλικής ελληνικής γλώσσας

Ηλεκτρονικοί Υπολογιστές I

Προγραμματισμός και Εφαρμογές Υπολογιστών

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Προγραμματισμός και Εφαρμογές Υπολογιστών

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Οικονομετρία. Πολλαπλή Παλινδρόμηση. Στατιστικός έλεγχος γραμμικού συνδυασμού συντελεστών. Τμήμα: Αγροτικής Οικονομίας & Ανάπτυξης

Εκκλησιαστικό Δίκαιο

Επιμέλεια μεταφράσεων και εκδοτικός χώρος

Βασικοί άξονες Μαθηματικά στην εκπαίδευση:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Κβαντική Θεωρία ΙΙ. Συστήματα Πολλών Σωματίων Διδάσκων: Καθ. Λέανδρος Περιβολαρόπουλος

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Πληροφορική ΙΙ Θεματική Ενότητα 5

Αξιολόγηση μεταφράσεων ιταλικής ελληνικής γλώσσας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Επιμέλεια Εκθέσεων. Εκθέτοντας την τέχνη Διδάσκουσα: Επίκουρη Καθηγήτρια Εσθήρ Σ.

Γενικά Μαθηματικά Ι. Ενότητα 16: Ολοκλήρωση Τριγωνομετρικών Συναρτήσεων, Γενικευμένα Ολοκληρώματα Λουκάς Βλάχος Τμήμα Φυσικής

Αρχές Προγραμματισμού

Γενικά Μαθηματικά Ι. Ενότητα 13: Ακτίνα Σύγκλισης, Αριθμητική Ολοκλήρωση, Ολοκλήρωση Κατά Παράγοντες. Λουκάς Βλάχος Τμήμα Φυσικής

Διπλωματική Ιστορία Ενότητα 2η:

ΓΕΝΙΚΗ ΚΑΙ ΑΝΟΡΓΑΝΗ ΧΗΜΕΙΑ

Εισαγωγή στους Υπολογιστές

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Λεκτικός αναλυτής Διδάσκων: Επικ. Καθ. Γεώργιος Μανής

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

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

Οι Φάσεις της Μεταγλώττισης λεκτική ανάλυση συντακτική ανάλυση Πίνακας Συμβόλων σημασιολογική ανάλυση παραγωγή ενδιάμεσου κώδικα Διαχείριση λαθών βελτιστοποίηση ενδιάμεσου κώδικα παραγωγή τελικού κώδικα βελτιστοποίηση τελικού κώδικα

Λεκτική Ανάλυση Αρχικό πρόγραμμα Χαρακτήρας-χαρακτήρας Λεκτική Ανάλυση Λεκτικές μονάδες Διαγνωστικά μηνύματα

Διαπροσωπεία Λεκτικού Αναλυτή Καλείται ως συνάρτηση από το συντακτικό αναλυτή Διαβάζει γράμμα-γράμμα το πηγαίο πρόγραμμα Κάθε φορά που καλείται επιστρέφει την επόμενη λεκτική μονάδα Επιστρέφει στο συντακτικό αναλυτή έναν ακέραιο που χαρακτηρίζει τη λεκτική μονάδα τη λεκτική μονάδα

Εσωτερική Λειτουργία Ο λεκτικός αναλυτής εσωτερικά λειτουργεί σαν ένα αυτόματο καταστάσεων το οποίο ξεκινά από μία αρχική κατάσταση, με την είσοδο κάθε χαρακτήρα αλλάζει κατάσταση έως ότου συναντήσει μία τελική κατάσταση Το αυτόματο καταστάσεων αναγνωρίζει δεσμευμένες λέξεις πχ. if, for, while σύμβολα της γλώσσας π.χ. «+», «;», «=» αναγνωριστικά και σταθερές π.χ. counter, a12, 32768 λάθη π.χ. μη επιτρεπτός χαρακτήρας, κλείσιμο σχολίων χωρίς να έχουν ανοίξει προηγουμένως

Παράδειγμα Αυτόματου Το αυτόματο του επόμενου παραδείγματος αναγνωρίζει: αναγνωριστικά που ξεκινούν από γράμμα και αποτελούνται από γράμματα ή ψηφία φυσικούς αριθμούς ως αριθμητικές σταθερές τα αριθμητικά σύμβολα + - * / τους σχεσιακούς τελεστές < > = >= <= <> τα σύμβολα := ( ), ; σχόλια που περικλείονται σε άγκιστρα { } και αγνοούνται

Αυτόματο λευκός χαρακτήρας αρχική κατάσταση 0 γράμμα / ψηφίο γράμμα 1 αναγνωριστικό ψηφίο ψηφίο 2 αριθμ. σταθερά

Αυτόματο λευκός χαρακτήρας 0 όταν στην αρχική κατάσταση έρθει λευκός χαρακτήρας, ουσιαστικά αγνοείται και μένουμε στην ίδια κατάσταση γράμμα / ψηφίο γράμμα 1 αναγνωριστικό ψηφίο ψηφίο 2 αριθμ. σταθερά

Αυτόματο λευκός χαρακτήρας 0 όταν στην αρχική κατάσταση έρθει γράμμα, τότε μεταβαίνουμε στην κατάσταση 1 που θα μας οδηγήσει σε αναγνωριστικό γράμμα 1 γράμμα / ψηφίο αναγνωριστικό ψηφίο ψηφίο 2 αριθμ. σταθερά

Αυτόματο λευκός χαρακτήρας 0 γράμμα στη συνέχεια όσο λαμβάνουμε γράμμα ή ψηφίο μένουμε στην ίδια κατάσταση, προσθέτοντας το γράμμα ή το ψηφίο στο αναγνωριστικό που θα καταλήξουμε γράμμα / ψηφίο 1 αναγνωριστικό ψηφίο ψηφίο 2 αριθμ. σταθερά

Αυτόματο λευκός χαρακτήρας 0 γράμμα 1 γράμμα / ψηφίο αν έρθει κάτι που δεν είναι γράμμα ή ψηφίο τότε θεωρούμε ότι το αναγνωριστικό ολοκληρώθηκε και πηγαίνουμε σε τελική κατάσταση αναγνωριστικό ψηφίο ψηφίο 2 αριθμ. σταθερά

Αυτόματο λευκός χαρακτήρας 0 γράμμα / ψηφίο γράμμα 1 αναγνωριστικό ψηφίο 2 ψηφίο έτσι αναγνωρίσαμε λεκτική μονάδα και ο λεκτικός αναλυτής τερματίζει αφού την επιστρέψει στον συντακτικό αναλυτή αριθμ. σταθερά

Αυτόματο όταν ξανακληθεί ο λεκτικός αναλυτής θα ξεκινήσει πάλι από την αρχική κατάσταση, αλλά θα διαβάζει τους χαρακτήρες από εκεί που σταμάτησε 0 λευκός χαρακτήρας γράμμα / ψηφίο γράμμα 1 αναγνωριστικό ψηφίο ψηφίο 2 αριθμ. σταθερά

Αυτόματο λευκός χαρακτήρας 0 γράμμα / ψηφίο γράμμα 1 αναγνωριστικό όταν στην αρχική κατάσταση έρθει ψηφίο, τότε μεταβαίνουμε στην κατάσταση 2 που θα μας οδηγήσει σε αριθμητική σταθερά ψηφίο 2 ψηφίο αριθμ. σταθερά

Αυτόματο λευκός χαρακτήρας 0 γράμμα / ψηφίο γράμμα 1 αναγνωριστικό ψηφίο 2 ψηφίο στη συνέχεια όσο λαμβάνουμε ψηφίο μένουμε στην ίδια κατάσταση, προσθέτοντας το ψηφίο στην αριθμητική σταθερά που θα καταλήξουμε αριθμ. σταθερά

Αυτόματο λευκός χαρακτήρας 0 γράμμα / ψηφίο γράμμα 1 αναγνωριστικό ψηφίο 2 ψηφίο αν έρθει κάτι που δεν είναι ψηφίο τότε θεωρούμε ότι η αριθμητική σταθερά ολοκληρώθηκε και πηγαίνουμε σε τελική κατάσταση αριθμ. σταθερά

Αυτόματο λευκός χαρακτήρας 0 γράμμα / ψηφίο γράμμα 1 αναγνωριστικό ψηφίο 2 ψηφίο έτσι αναγνωρίσαμε αριθμητική σταθερά και ο λεκτικός αναλυτής τερματίζει αφού την επιστρέψει στον συντακτικό αναλυτή αριθμ. σταθερά

Αυτόματο + - * / = + - * / = όταν από την αρχική κατάσταση έρθει το σύμβολο «+» το αναγνωρίζουμε όταν από την αρχική κατάσταση έρθει το σύμβολο «-» το αναγνωρίζουμε όταν από την αρχική κατάσταση έρθει το σύμβολο «*» το αναγνωρίζουμε όταν από την αρχική κατάσταση έρθει το σύμβολο «/» το αναγνωρίζουμε όταν από την αρχική κατάσταση έρθει το σύμβολο «=» το αναγνωρίζουμε

Αυτόματο όταν από την αρχική κατάσταση έρθει το σύμβολο «<» τότε υπάρχουν τρεις περιπτώσεις < 3 = > <= <> < > 4 = >= >

Αυτόματο < 3 = <= να ακολουθεί «=» οπότε αναγνωρίζουμε «<=» > <> να ακολουθεί «>» οπότε αναγνωρίζουμε «<>» < > 4 = >= >

Αυτόματο < 3 = <= > <> < οτιδήποτε άλλο και να ακολουθεί αναγνωρίζουμε «<» > 4 = >= >

Αυτόματο < 3 = <= > <> < > 4 = >= όμοια και εδώ, αν το «>» το ακολουθεί «=» αναγνωρίζουμε «<=» >

Αυτόματο < 3 = <= > <> < > 4 = >= > οτιδήποτε άλλο και να ακολουθεί αναγνωρίζουμε «>»

Αυτόματο : 5 = := λάθος αν από την αρχική κατάσταση συναντήσουμε μια «:», τότε υπάρχει μόνο μία επιλογή να καταλήξουμε σε «:=» έτσι αν μετά την «:» έρθει «=» αναγνωρίζουμε «:=», ενώ σε κάθε άλλη περίπτωση αναγνωρίζουμε λάθος εδώ δεν μπορούμε να αναγνωρίσουμε την «:» ως λεκτική μονάδα όπως κάναμε για το «<» και το «>» αφού το «:» δεν αποτελεί σύμβολο της γλώσσας

Αυτόματο αν από την αρχική κατάσταση συναντήσουμε άνοιγμα σχολίων τότε ό,τι ακολουθήσει αγνοείται έως ότου βρεθεί κλείσιμο σχολίων οπότε μεταβαίνουμε στην κατάσταση 0, που είναι η αρχική κατάσταση { 6 } 0 eof λάθος

Αυτόματο { 6 } 0 eof λάθος αν πριν βρεθεί κλείσιμο σχολίων βρεθεί τέλος αρχείου σημαίνει ότι άνοιξαν σχόλια χωρίς να κλείσουν. Προφανώς έχουμε εδώ λάθος θα μπορούσε να τροποποιηθεί το αυτόματο αν επιθυμούμε να θεωρούνται διαφορετικά πράγματα λάθος, για παράδειγμα αν θέλουμε το {{ } να μην είναι επιτρεπτό

Αυτόματο, ; ) ( eof, ; ) ( eof όταν από την αρχική κατάσταση έρθει το σύμβολο «,» το αναγνωρίζουμε όταν από την αρχική κατάσταση έρθει το σύμβολο «;» το αναγνωρίζουμε όταν από την αρχική κατάσταση έρθει το σύμβολο «)» το αναγνωρίζουμε όταν από την αρχική κατάσταση έρθει το σύμβολο «(» το αναγνωρίζουμε όταν από την αρχική κατάσταση έρθει το τέλος αρχείου το αναγνωρίζουμε λάθος

Αυτόματο, ;, ; ) ( ) ( eof eof λάθος όταν από την αρχική κατάσταση έρθει οτιδήποτε άλλο, τότε προφανώς αυτό δε μπορεί να μας οδηγήσει σε τελική κατάσταση, οπότε αναγνωρίζουμε την ύπαρξη λάθους

Αυτόματο λευκός χαρακτήρας 0 γράμμα 1 γράμμα / ψηφίο από τα αναγνωριστικά ξεχωρίζουμε τις δεσμευμένες λέξεις αναγνωριστικό for id while do else

Οπισθοδρόμηση Για να αναγνωρίσουμε μία λεκτική μονάδα μερικές φορές καταναλώνουμε ένα χαρακτήρα από την επόμενη λεκτική μονάδα Ο χαρακτήρας αυτός πρέπει να ενσωματωθεί στην επόμενη λεκτική μονάδα Αυτό συμβαίνει στο παράδειγμά μας στα αναγνωριστικά και στις αριθμητικές σταθερές στα δεσμευμένα σύμβολα < και >

Παράδειγμα Υλοποίησης Αυτόματου με Πίνακα Έστω το αυτόματο το οποίο αναγνωρίζει λεκτικές μονάδες που αποτελούνται από μία σειρά από 1 ή περισσότερα x ακολουθούμενη από ένα y ακριβώς και μετά από μία σειρά από 0 ή περισσότερα x, δηλαδή x + yx* x x x y 0 1 2 OK y error

Υλοποίηση με Πίνακα #define x 0 #define y 1 #define other 2 #define state0 0 #define state1 1 #define state2 2 #define error -1 #define OK -2 x y other state0 state1 state2 state1 error error state1 state2 error state2 error OK

Υλοποίηση με Πίνακα state = state0; while (state!=ok && state!=error) { newsymbol(&inp); state = Trans_Diagram [state][inp]; }

Εναλλακτική Υλοποίηση με Σειρά Εντολών Απόφασης state = state0; while (state!=ok && state!=error) { if (state==state0 && input==x) state=state1; else if (state==state0) state=error; else if (state==state1 && input==x) state=state1; else if (state==state1 && input==y) state=state2; else if (state==state1) state=error; else if (state==state2 && input==x) state=state2 else if (state==state2 && input==y) state=error else if (state==state2) state=ok }

Το Εργαλείο Lex (flex) Lex Μεταπρόγραμμα yylex() Διαγνωστικά μηνύματα

Μετάφραση με τα Eργαλεία Lex-Yacc

Αναγνώριση με Κανονικές Εκφράσεις

Παράδειγμα Αναγνώρισης με το Lex letter [a-za-z] digit [0-9] delim [" "\t\n] id {letter}({letter} {digit})* number {digit}+

Τέλος Ενότητας

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

Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1125.

Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Επικ. Καθ. Γεώργιος Μανής. «Μεταφραστές. Λεκτικός αναλυτής». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1125.

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/