ΕΠ33 - Μεταγλωττιστές

Πληροφορίες

Κωδικός : ΕΠ33

Τύπος : Επιλογής

Εξάμηνο : 8

Μονάδες ECTS: 5

URL: https://eclass.hua.gr/courses/DIT107/

Αναμενόμενα Αποτελέσματα

Σκοπός του μαθήματος είναι η κατανόηση των θεωρητικών αρχών αλλά και η εκμάθηση των πρακτικών τεχνικών που είναι απαραίτητες για την κατασκευή μεταγλωττιστών για έναν μεγάλο αριθμό γλωσσών προγραμματισμού. Οι φοιτητές θα έχουν την ευκαιρία να κατασκευάσουν ένα μεγάλο μέρος ενός μεταγλωττιστή για μια απλή γλώσσα προγραμματισμού.

Περιεχόμενο

Μεταγλωττιστές και περιβάλλον μεταγλώττισης, φάσεις μεταγλώττισης, οργάνωση μεταγλωττιστή, λεκτική ανάλυση, λεκτικές μονάδες, γλώσσες, κανονικές εκφράσεις, αυτόματα, συντακτικός αναλυτής, γραμματικές χωρίς συμφραζόμενα, συντακτική ανάλυση από πάνω προς τα κάνω ή από κάτω προς τα πάνω, μετάφραση οδηγούμενη από τη σύνταξη, σημασιολογική ανάλυση, συστήματα τύπων, σημασιολογικός έλεγχος, πίνακες συμβόλων, παραγωγή ενδιάμεσου κώδικα, μορφές ενδιάμεσου κώδικα, βελτιστοποίηση ενδιάμεσου κώδικα, παραγωγή τελικού κωδικα, εργαλεία αυτόματης κατασκευής μεταγλωττιστών.

1η εβδομάδα Διάλεξη: Εισαγωγή στους μεταγλωττιστές. Φάσεις μεταγλώττισης.
2η εβδομάδα Διάλεξη: Λεκτική Ανάλυση.
3η εβδομάδα Εργαστήριο: Κατασκευή λεκτικού αναλυτή για μία απλή αριθμομηχανή.
4η εβδομάδα Διάλεξη: Συντακτική Ανάλυση. Καθοδική συντακτική ανάλυση.
5η εβδομάδα Διάλεξη: Συντακτική Ανάλυση. Ανοδική συντακτική ανάλυση.
6η εβδομάδα Εργαστήριο: Κατασκευή συντακτικού αναλυτή για την αριθμομηχανή.
7η εβδομάδα Διάλεξη: Μετάφραση Οδηγούμενη από το Συντακτικό.
8η εβδομάδα Διάλεξη: Σημασιολογική Ανάλυση.
9η εβδομάδα Εργαστήριο: Κατασκευή αφηρημένου συντακτικού δέντρου και υλοποίηση σημασιολογικής ανάλυση για την αριθμομηχανή.
10η εβδομάδα Διάλεξη: Παραγωγή Ενδιάμεσου Κώδικα.
11η εβδομάδα Διάλεξη: Περιβάλλον Εκτέλεσης
12η εβδομάδα Διάλεξη: Εικονική μηχανή JVM Java Virtual Machine.
13η εβδομάδα Εργαστήριο: Παραγωγή εκτελέσιμου προγράμματος σε μορφή bytecode για το JVM για την αριθμομηχανή.

Τρόπος Αξιολόγησης

Προφορική εξέταση των εργασιών που εκπονούνται κατά την διάρκεια του εξαμήνου.

Βιβλιογραφία

- Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. 2nd edition. Addison-Wesley, 2007.
- Andrew W. Appel, Modern Compiler Implementation in C. Cambridge University Press, 1998.
- Andrew W. Appel, Modern Compiler Implementation in Java. Cambridge University Press, 1998.
- Κ. Λάζος, Π. Κατσαρός, Ζ. Καρασκος. Μεταγλωττιστές Γλωσσών Προγραμματισμού: θεωρία και πράξη. Εκδόσεις Θεσσαλονίκη 2004.
- Νικόλαος Παπασπύρου και Εμμανουήλ Σκορδαλάκης. Μεταγλωττιστές, Εκδόσεις Συμμετρία.
- Keith D. Cooper, Linda Torczon. Σχεδίαση και κατασκευή μεταγλωττιστών. Πανεπιστημιακές εκδόσεις Κρήτης 2018.

- ACM Transactions on Programming Languages and Systems (TOPLAS)
- ACM SIGPLAN Symposium on Principles of Programming Languages (POPL)
- ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)
- International Conference on Compiler Construction (CC)