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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική και Εκπαίδευση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Βιολογία Ι. Φροντιστήριο

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

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

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

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

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

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

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

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

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

Μηχανολογικό Σχέδιο Ι

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

Αρχιτεκτονική Υπολογιστών

Φυσική Περιβάλλοντος

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

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

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

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

Οικονομία των ΜΜΕ. Ενότητα 9: Εταιρική διασπορά και στρατηγικές τιμολόγησης

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

Κβαντική Επεξεργασία Πληροφορίας

Αρχιτεκτονική Υπολογιστών

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

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

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

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

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

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

Βιολογικές Μεμβράνες και Μεταγωγή Σήματος

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

Ενότητα: Περιγραφική Στατιστική 1: Πίνακες - Διαγράμματα

Οικονομετρία. Συστήματα συναληθευουσών εξισώσεων Το πρόβλημα της ταυτοποίησης. Τμήμα: Αγροτικής Οικονομίας & Ανάπτυξης. Διδάσκων: Λαζαρίδης Παναγιώτης

Φ 619 Προβλήματα Βιοηθικής

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

Διοικητική Λογιστική

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

Στρατηγικό Μάρκετινγκ

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

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

Εισαγωγή στη Γλωσσολογία Ι

Transcript:

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

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

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

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

Συντακτική Ανάλυςη Λεκτικζσ Μονάδεσ Συντακτικι Ανάλυςθ Συντακτικό δζντρο Διαγνωςτικά μθνφματα

Λειτουργία Συντακτικοφ Αναλυτή Γίνεται ζλεγχοσ για να διαπιςτωκεί εάν το πθγαίο πρόγραμμα ανικει ι όχι ςτθ γλϊςςα δθμιουργεί το κατάλλθλο «περιβάλλον» μζςα από το οποίο αργότερα κα κλθκοφν οι ςθμαντικζσ ρουτίνεσ. Υπάρχουν πολλοί τρόποι για να καταςκευαςτεί ζνασ ςυντακτικόσ αναλυτισ Θα προτιμιςουμε τθ ςυντακτικι ανάλυςθ με αναδρομικι κατάβαςθ Βαςίηεται ςε γραμματικι LL(1)

Γραμματική LL(1) L L : left to right : leftmost derivation (1) : one look-ahead symbol Η γραμματικι LL(1) αναγνωρίηει από αριςτερά ςτα δεξιά, τθν αριςτερότερθ δυνατι παραγωγι και όταν βρίςκεται ςε δίλλθμα ποιον κανόνα να ακολουκιςει τθσ αρκεί να κοιτάξει το αμζςωσ επόμενο ςφμβολο ςτθν ςυμβολοςειρά ειςόδου

Γραμματική LL(1) Παράδειγμα: S ::= while(condition) S S ::= print(expression) S ::= input(id) S ::= { S ςτο παραπάνω τμιμα γραμματικισ, όταν πρζπει να αναγνωρίηουμε S, τότε ακολουκοφμε τον πρϊτο κανόνα αν θ επόμενθ λεκτικι μονάδα ςτθ είςοδο είναι το while, τον δεφτερο εάν είναι το print, τον τρίτο εάν είναι το input και τον τζταρτο εάν είναι το άνοιγμα αγκίςτρου

Ανάλυςη από πάνω προσ τα κάτω Γραμματικι: S ::= aabc A ::= Ab A ::= csb S ::= ε B ::= a Συμβολοςειρά ειςόδου: acabac Παραγωγι: S ::= aabc S ::= aabbc S ::= acsbbbc S ::= acabac

Εςωτερική Λειτουργία Για κάκε ζναν από τουσ κανόνεσ τθσ γραμματικισ, φτιάχνουμε και ζνα αντίςτοιχο υποπρόγραμμα Όταν ςυναντάμε μθ τερματικό ςφμβολο καλοφμε το αντίςτοιχο υποπρόγραμμα Όταν ςυναντάμε τερματικό ςφμβολο, τότε εάν και ο λεκτικόσ αναλυτισ επιςτρζφει λεκτικι μονάδα που αντιςτοιχεί ςτο τερματικό αυτό ςφμβολο ζχουμε αναγνωρίςει επιτυχϊσ τθ λεκτικι μονάδα αντίκετα εάν ο λεκτικόσ αναλυτισ δεν επιςτρζψει τθ λεκτικι μονάδα που περιμζνει ο ςυντακτικόσ αναλυτισ, ζχουμε λάκοσ και καλείται ο διαχειριςτισ ςφαλμάτων Όταν αναγνωριςτεί και θ τελευταία λζξθ του πθγαίου προγράμματοσ, τότε θ ςυντακτικι ανάλυςθ ζχει ςτεφτεί με επιτυχία.

Παράδειγμα Ένα Τμήμα Γραμματικήσ <PROGRAM> <PROGRAMBLOCK> <BLOCK> <DECLARATIONS> <CONSTDECL> ::= program ID <PROGRAMBLOCK> ::= <DECLARATIONS> <SUBPROGRAMS> <BLOCK> ::= begin <SEQUENCE> end ::= <CONSTDECL> <VARDECL> ::= const <ASSIGNLIST> ; ε...

Από τη Γραμματική ςτον Κώδικα <PROGRAM> ::= program ID <PROGRAMBLOCK> void program() { if (token==programtk) { token=lex(); if (token==idtk) { token=lex(); programblock(); else error( program name exprected ); else error ( the keyword program was expected );

Από τη Γραμματική ςτον Κώδικα <PROGRAMBLOCK> ::= <DECLARATIONS> <SUBPROGRAMS> <BLOCK> void programblock() { declarations(); subprograms(); block();

Από τη Γραμματική ςτον Κώδικα <BLOCK> ::= begin <SEQUENCE> end void block() { if (token==begintk) { token=lex(); sequence(); if (token==endtk) token=lex(); else error ( the keyword end was expected ); else error ( the keyword begin was expected );

Από τη Γραμματική ςτον Κώδικα <DECLARATRIONS> ::= <CONSTDECL><VARDECL> void declarations() { constdecl(); vardecl(); <CONSTDECL>::= const <ASSIGNLIST> ; ε void constdecl() { if (token==consttk) { token=lex(); assignlist();

Παράδειγμα Ένα Τμήμα Γραμματικήσ <IF-STAT> <ELSEPART> ::= if <CONDITION> then <BLOCK> <ELSEPART> ::= ε else <BLOCK>... <BOOLFACTOR> ::= not <CONDITION> ( <CONDITION> ) <EXPRESSION> <RELATIONAL-OPER> <EXPRESSION> <EXPRESSION>... := <OPTIONAL-SIGN> <TERM> ( <ADD-OPER> <TERM>)*

Από τη Γραμματική ςτον Κώδικα <IF-STAT> ::= if <CONDITION> then <BLOCK> <ELSEPART> void if_stat() { if (token==iftk) { token=lex(); condition(); if (token==thentk) { token=lex(); block(); elsepart(); κα υπάρχει πάντα if αλλιϊσ δε κα μπει μζςα ςτθν IF-STAT else error ( the keyword then was expected ); else error ( the keyword if was expected );

Από τη Γραμματική ςτον Κώδικα <ELSEPART> ::= else <BLOCK> ε void elsepart() { if (token==elsetk) { token=lex(); block();

Από τη Γραμματική ςτον Κώδικα <BOOLFACTOR> ::= not <CONDITION> ( <CONDITION> ) <EXPRESSION> <RELATIONAL-OPER> <EXPRESSION> void boolfactor() { if (token==nottk) { token=lex(); condition(); else if (token==leftpartk) { token=lex(); condition(); if (token==rightpartk) token=lex() else error( right bracket expected ); else { expression(); relationaloper(); expression();

Από τη Γραμματική ςτον Κώδικα <EXPRESSION>::=<OPTIONAL-SIGN> <TERM> (<ADD-OPER> <TERM>) * void expression() { optionalsign(); term(); while (token==plustk token==minustk) { addoper(); term();

Συντακτική Ανάλυςη με το Εργαλείο yacc Yacc γραμματική yypasre() Διαγνωστικά μηνύματα

Παράδειγμα Γραμματικήσ

Παράδειγμα calculator - lex

Παράδειγμα calculator - yacc

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

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

Σημειώματα

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 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/