Μεταγλωττιστές (Compilers) (Θ) Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Α) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Εισαγωγή Κατανόηση της φυσιολογίας και λειτουργίας του Στοματογναθικού Συστήματος (ΣΓΣ) για τον οδοντοτεχνίτη σημαίνει: Αποφυγή σφαλμάτων κατασκευής των.
Advertisements

Η αντοχή του πλοίου Διαμήκης αντοχή Εγκάρσια αντοχή Τοπική αντοχή.
Πηγές τάσης/ρεύματος R , L, C
Επιχειρηματική ηθική Υπέρβαση της ανθρώπινης ομορφίας. Προς τη θέωση…
Τέλος Ενότητας.
Διατομή σύνθετης δοκού
Οργάνωση πληροφοριών Ταξινόμηση (Θ) Ενότητα 3: Αρχιτεκτονική της Ευρετηρίασης (α μέρος) Δάφνη Κυριάκη-Μάνεση Τμήμα Βιβλιοθηκονομίας και Συστημάτων Πληροφόρησης.
Οργάνωση πληροφοριών Ταξινόμηση (Θ) Ενότητα 9: Qualified Dublin Core Δάφνη Κυριάκη-Μάνεση Τμήμα Βιβλιοθηκονομίας και Συστημάτων Πληροφόρησης Το περιεχόμενο.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Μαγνητικό πεδίο γύρω από ρευματοφόρο αγωγό
Βασικές αρχές ευρετηρίασης
Οργάνωση πληροφοριών Ταξινόμηση (Θ) Ενότητα 1: Εισαγωγή (α μέρος) Δάφνη Κυριάκη-Μάνεση Τμήμα Βιβλιοθηκονομίας και Συστημάτων Πληροφόρησης Το περιεχόμενο.
Η ανοσοαποτύπωση ως επιβεβαιωτική μέθοδος
Τριφασικά συμμετρικά δίκτυα σε συνδεσμολογία Υ (1/2)
Περιλήψεις Γιατί; Πως; Τι είναι; Ποιος τις κάνει;
Αυτοματοποιημένη ευρετηρίαση
Συστήματα Θεματικής Πρόσβασης (Θ) Ενότητα 9: Θησαυροί: Εισαγωγή Δάφνη Κυριάκη-Μάνεση Τμήμα Βιβλιοθηκονομίας και Συστημάτων Πληροφόρησης Το περιεχόμενο.
Διαμόρφωση πεδίων Περιγραφικά πεδία Διαχειριστικά πεδία Δομικά πεδία.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
Διάνοιξη πόρων Με ακτινοβολούμενη θερμότητα. Θερμαινόμενα σίδερα.
Καμπυλότητα Φακού P c
Αλκίνια Χαρακτηριστική ομάδα: τριπλός δεσμός.
Τεχνολογία οφθαλμικών φακών Ι (Ε) Ενότητα 5: Έγχρωμοι φακοί Θεμιστοκλής Γιαλελής, Οπτικός, MSc, PhD candidate ΕΔΙΠ του τμήματος Οπτικής και Οπτομετρίας.
Eιδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων
Κανόνες Ασφαλείας Εργοταξίων
ΟΙΚΟΝΟΜΙΚΑ ΤΟΥ ΕΛΕΓΧΟΥ ΤΗΣ ΡΥΠΑΝΣΗΣ
Άλλες μορφές νευρώσεων
Διαχείριση παραγωγής εντύπων 1/2
Επικοινωνιακός Προγραμματισμός Ι
Άσκηση 8 (1 από 3) Προβολές 1. Να επιλέξετε ένα θέμα βασισμένο σε κάποια παράγραφο / υποπαράγραφο του κεφαλαίου 6 των σημειώσεων και να κάνετε μια εργασία.
Τεχνολογία οφθαλμικών φακών Ι (Ε)
Υπολογιστική Γεωμετρία και Εφαρμογές στις ΒΧΔ
Παρουσίαση ναυπηγικών γραμμών 1/3
Ταυτότητα και περίγραμμα μαθήματος
Άσκηση 7 (1 από 5) Υπολογισμοί μηκών τόξων σφαίρας. Το έτος 2035 μ.Χ., μετά από πυρηνική καταστροφή και λόγω του φαινομένου του θερμοκηπίου, που πήρε εκρηκτικές.
ΠΡΟΤΥΠΟ ΕΛΟΤ EN ISO 3251 Ζύγιση μάζας υγρού μελανιού (m1 g)
Ενότητα 13 Αξιολόγηση μαθήματος και διδάσκοντος από την εφαρμογή της Μονάδας Ολικής Ποιότητας (ΜΟΔΙΠ) του ΤΕΙ Αθήνας Αξιολόγηση του μαθήματος Αξιολόγηση.
Άσκηση 9 (1 από 2) Ανακαλύψτε στο χάρτη σας μερικά χαρτογραφικά αντικείμενα που να ανήκουν στις παρακάτω κατηγορίες : φυσικά, τεχνητές κατασκευές, αφηρημένα.
Τοπολογικές σχέσεις 1/3 Βρείτε και περιγράψτε τις τοπολογικές σχέσεις σύμφωνα με τους (Pantazis, Donnay 1996) για τα παρακάτω γεω-γραφικά αντικείμενα:
Επιλογή φλέβας για λήψη φλεβικού αίματος 1/7
Επικοινωνιακός Προγραμματισμός Ι
Εικαστικές συνθέσεις - Χρώμα στο χώρο
Γενική και Μαθηματική Χαρτογραφία (Ε)
Οργάνωση και Διοίκηση Πρωτοβάθμιας (Θ)
Λιθογραφία – Όφσετ (Θ) Ενότητα 8.2: Εκτυπωτική Διαδικασία Μηχανής
Επικοινωνιακός Προγραμματισμός Ι
Ενότητα 9: Συστήματα Υγείας στην Ευρώπη: Σουηδία
Αισθητική Σώματος Ι (Ε)
Αισθητική Σώματος Ι (Ε)
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας
Ειδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων -E
Γενική και Μαθηματική Χαρτογραφία (Ε)
Αισθητική Σώματος Ι (Ε)
Ενότητα 8: Συστήματα Υγείας στην Ευρώπη: Γαλλία
Βασικές κλινικές δεξιότητες (Ε)
Eιδικά θέματα βάσεων χωρικών δεδομένων και θεωρία συστημάτων -Θ
Συστήματα Θεματικής Πρόσβασης (Θ)
Ψυχιατρική Ενότητα 7: Συνέχεια σταδίων
Κοσμητολογία ΙΙ (Θ) Ενότητα 3: Kρέμες (γ’ μέρος)
Ανοσολογία (Ε) Ενότητα 3: Αιμοσυγκόλληση Πέτρος Καρκαλούσος
Γενική και Μαθηματική Χαρτογραφία (Ε)
Οργανική Χημεία (Ε) Ενότητα 2: Προσδιορισμός σημείου τήξης
Ενότητα 1: ……………….. Όνομα Επώνυμο Τμήμα __
Αισθητική προσώπου Ι (Ε)
Μεταγλωττιστές (Compilers) (Θ)
Σύσταση και Ανάλυση Γλευκών και Οίνων (Θ)
Αισθητική ηλεκτροθεραπεία σώματος
Ενότητα 6: Δονήσεις Γεωργία Πέττα Τμήμα Φυσικοθεραπείας
Αισθητική ηλεκτροθεραπεία σώματος
Επικοινωνιακός Προγραμματισμός Ι
Μεταγράφημα παρουσίασης:

Μεταγλωττιστές (Compilers) (Θ) Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Α) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.

Ενδιάμεσος κώδικας Αποτελεί σειρά ενδιάμεσων αναπαραστάσεων του πηγαίου κώδικα: Για κάθε δομή της γλώσσας προσδιορίζεται ο αντίστοιχος ενδιάμεσος κώδικας σε ενδιάμεση γλώσσα. Διευρύνεται ο συντακτικός αναλυτής με σημασιολογικές ρουτίνες που παράγουν ενδιάμεσο κώδικα Οι σημασιολογικές ρουτίνες χρησιμοποιούν: 1.Σχέδιο παραγωγής ενδιάμεσου κώδικα 2.Μεταβλητές ιδιοτήτων (attributes) για κάθε σύμβολο της γραμματικής 1

Πρωταρχικές σημασιολογικές ρουτίνες ΚΤΔ (1 από 2) Τυπικές Διαδικασίες: lookup (N) επιστρέφει τη δ/νση του πίνακα συμβόλων για το τερματικό όρο Ν newTemp (t) δημιουργεί νέα προσωρινή μεταβλητή newLabel (S) δημιουργεί νέα ετικέτα gen (....) γεννά την επόμενη γραμμή κώδικα τριών διευθύνσεων anal (Ε, Ε.place) αναλύει την Ε και τοποθετεί τη τιμή της ιδιότητας place (π.χ. τη value) στο Ε.place 2

Πρωταρχικές σημασιολογικές ρουτίνες ΚΤΔ (2 από 2) Παράμετροι διαδικασιών: E.place: η διεύθυνση που κρατά την τιμή της ιδιότητας place που αφορά στην έκφραση E κατά την ολοκλήρωση της ενδιάμεσης μετάφρασής της E.code: οι γραμμές ενδιάμεσου κώδικα που «γεννούνται» κατά την εφαρμογή του σχεδίου μετάφρασης για την πηγαία έκφραση E id.lexeme: η διεύθυνση του id στον πίνακα συμβόλων nextstat: καθολική μεταβλητή που επιστρέφει τη διεύθυνση της νέας γραμμής ενδιάμεσου κώδικα που θα δημιουργηθεί κατά την εφαρμογή του σχεδίου μετάφρασης (κάθε κλήση στη gen(…) αυξάνει τη nextstat κατά 1) 3

Παραγωγή ΚΤΔ για την ανάθεση Παράδειγμα: Εσωτερικό αποτέλεσμα δημιουργίας ενδιάμεσου κώδικα για την: a := b*-c + d*-e 4 t1 := -c t2 := b * t1 t3 := -e t4 := d * t3 t5 := t2 + t4 a:= t5 E.code E.place assign a+ ** b uminus c d e

Παράδειγμα 5 Παραγόμενος κώδικας για το δεξιό σκέλος Παραγωγή γραμμής κώδικα τριών δ/νσεων για καταχώρηση τελικού αποτελέσματος άθροισης E.value= newtemp () E.code = E1.code || E2.code || gen(E. value ‘=’ E1. value ‘+’ E2. value) E.code = ‘ ’ Συντακτικοί κανόνες E → E1 + E2 | id Σημασιολογικοί κανόνες E.val → E1.val + E2.val E.val → lookup(id.lexeme) Παραγωγή ενδιάμεσου κώδικα για την άθροιση Γραμματική ιδιοτήτων Σχέδιο παραγωγής ενδιάμεσου κώδικα Παραγόμενος κώδικας για το αριστερό σκέλος

Μετάφραση ανάθεσης αριθμητικών εκφράσεων 6 ProductionSemantic Rule S = id ":=“ E S.code := E.code || gen(id.place ":=" E.place) E = E "+” E E.place := newtemp E.code := E 1.code || E 2.code || gen( E.place ":=" E 1.place "+" E 2.place) E = E "*" E E.place := newtemp E.code := E 1.code || E 2.code || gen( E.place ":=" E 1.place "*" E 2.place) E = "-” E E.place := newtemp E.code := E 1.code || gen( E.place ":=" "uminus" E 1.place) E = "(“ E ")" E.place := E 1.place E.code := E 1.code E = id E.place := id.place → lookup(id.lexeme) E.code := ""

Παράδειγμα παραγωγής ενδιάμεσου κώδικα για την πρόσθεση (1 από 5) Παράδειγμα: Εσωτερικό αποτέλεσμα δημιουργίας ενδιάμεσου κώδικα για την: b*-c + d*-e 7 b*-c d*- e E.place := newtemp E.code := E 1.code || E 2.code || gen( E.place ":=" E 1.place “+" E 2.place) t0 + ** b uminus c d e

Παράδειγμα παραγωγής ενδιάμεσου κώδικα για την πρόσθεση (2 από 5) 8 b*-c E.place := newtemp E.code := E 1.code || E 2.code || gen( E.place ":=" E 1.place “+" E 2.place) E 1.place := newtemp E 1.code := E 3.code || E 4.code || gen( E 1.place ":=" E 3.place “*" E 4.place) + ** b uminus c d e Παράδειγμα: Εσωτερικό αποτέλεσμα δημιουργίας ενδιάμεσου κώδικα για την: b*-c + d*-e b -c

Παράδειγμα παραγωγής ενδιάμεσου κώδικα για την πρόσθεση (3 από 5) 9 b*-c d E 2.place := newtemp E 2.code := E 5.code || E 6.code || gen( E 2.place ":=" E 5.place "+" E 6.place) E.place := newtemp E.code := E 1.code || E 2.code || gen( E.place ":=" E 1.place “+" E 2.place) E 1.place := newtemp E 1.code := E 3.code || E 4.code || gen( E 1.place ":=" E 3.place “*" E 4.place) + ** b uminus c d e Παράδειγμα: Εσωτερικό αποτέλεσμα δημιουργίας ενδιάμεσου κώδικα για την: b*-c + d*-e b -c d*- e -e-e

Παράδειγμα παραγωγής ενδιάμεσου κώδικα για την πρόσθεση (4 από 5) Παράδειγμα: Εσωτερικό αποτέλεσμα δημιουργίας ενδιάμεσου κώδικα για την: b*-c + d*-e 10 t1 := (lookup b) t2 := -c t3 := t1 * t2 E1.place E2.place E.place E 2.place := newtemp E 2.code := E 5.code || E 6.code || gen( E 2.place ":=" E 5.place “*" E 6.place) E.place := newtemp E.code := E 1.code || E 2.code || gen( E.place ":=" E 1.place “+" E 2.place) E 1.place := newtemp E 1.code := E 3.code || E 4.code || gen( E 1.place ":=" E 3.place “*" E 4.place) t4 := (lookup d) t5 := -e t6 := t4 * t5 t0 := t3 + t6 t0 b*-c d*- e d -e-e

Παράδειγμα παραγωγής ενδιάμεσου κώδικα για την πρόσθεση (5 από 5) 11 Κλήσεις πρωταρχικών ρουτινών analaddition (b*-c + d*-e, E.val) newtemp(E.place) analmult (b*-c, E1.place) newtemp(E1.place), lookup (b), analminus (c, E4.place) gen (E1.val) ‘:=‘ E3.place ‘+’ E4.place) analmult (d*-e, E2.place) newtemp(E2.place), lookup (d), analminus (e, E6.place) gen (E2.val) ‘:=‘ E5.place ‘+’ E6.place) gen (E.val) ‘:=‘ E1.place ‘+’ E2.place)

Ρουτίνα μετάφρασης αναθέσεων έστω S  id := Ε E  Ε+ E | Ε * id | cons procedure analaffectation; begin p = lookup(id.name) ; if p  null then begin anal(Ε,Ε.place); gen(p,':=',E.place); end else error(....); end; 12 Παράδειγμα: x := * y anal (4+5*y, E.place) := + x * y 4 5

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

Σημειώματα

Σημείωμα Αναφοράς Copyright Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας, Κατερίνα Γεωργούλη Κατερίνα Γεωργούλη. «Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος B)». Έκδοση: 1.0. Αθήνα Διαθέσιμο από τη δικτυακή διεύθυνση: ocp.teiath.gr.ocp.teiath.gr

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό. Οι όροι χρήσης των έργων τρίτων επεξηγούνται στη διαφάνεια «Επεξήγηση όρων χρήσης έργων τρίτων». Τα έργα για τα οποία έχει ζητηθεί άδεια αναφέρονται στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.

Επεξήγηση όρων χρήσης έργων τρίτων 17 Δεν επιτρέπεται η επαναχρησιμοποίηση του έργου, παρά μόνο εάν ζητηθεί εκ νέου άδεια από το δημιουργό. © διαθέσιμο με άδεια CC-BY διαθέσιμο με άδεια CC-BY-SA διαθέσιμο με άδεια CC-BY-NC-SA διαθέσιμο με άδεια CC-BY-NC Επιτρέπεται η επαναχρησιμοποίηση του έργου και η δημιουργία παραγώγων αυτού με απλή αναφορά του δημιουργού. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού, και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου. Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού και διάθεση του έργου ή του παράγωγου αυτού με την ίδια άδεια. Δεν επιτρέπεται η εμπορική χρήση του έργου. διαθέσιμο με άδεια CC-BY-ND Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η δημιουργία παραγώγων του έργου. διαθέσιμο με άδεια CC-BY-NC-ND Επιτρέπεται η επαναχρησιμοποίηση του έργου με αναφορά του δημιουργού. Δεν επιτρέπεται η εμπορική χρήση του έργου και η δημιουργία παραγώγων του. διαθέσιμο με άδεια CC0 Public Domain διαθέσιμο ως κοινό κτήμα Επιτρέπεται η επαναχρησιμοποίηση του έργου, η δημιουργία παραγώγων αυτού και η εμπορική του χρήση, χωρίς αναφορά του δημιουργού. χωρίς σήμανσηΣυνήθως δεν επιτρέπεται η επαναχρησιμοποίηση του έργου.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει:  το Σημείωμα Αναφοράς  το Σημείωμα Αδειοδότησης  τη δήλωση Διατήρησης Σημειωμάτων  το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους.

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