|
|
Βαθμολογία:
- Εργασία εξαμήνου (υλοποίηση ενός μεταγλωττιστή για μια διαδικαστική γλώσσα προγραμματισμού): 50%
- Τελική εξέταση: 50%
- Για να περάσει κάποιος/α το μάθημα πρέπει να συγκεντρώνει τουλάχιστον 50% σε κάθε μια από τις παραπάνω δοκιμασίες.
Ύλη του μαθήματος:
- Εισαγωγή. Υλοποίηση ενός απλού μεταγλωττιστή σε C.
- Λεκτική ανάλυση, κανονικές εκφράσεις και γλώσσες, υλοποίηση λεκτικών αναλυτών χρησιμοποιώντας lex/flex.
- Συντακτική ανάλυση, top-down και bottom-up parsing, υλοποίηση συντακτικών αναλυτών χρησιμοποιώντας yacc/bison.
- Σημασιολογική ανάλυση.
- Παραγωγή ενδιάμεσου κώδικα.
- Οργάνωση μνήμης και περιβάλλον εκτέλεσης (run-time environment) ενός προγράμματος.
- Παραγωγή και βελτιστοποίηση τελικού κώδικα.
- Μοντέρνα θέματα μεταγλώττισης.
Κύρια βιβλία:
- Alfred V. Aho, Monica S. Lam, Ravi Sethi and Jeffrey D. Ullman Compilers: Principles, Techniques, and Tools. 2nd edition. Addison-Wesley, 2007.
http://dragonbook.stanford.edu/
Οι διαλέξεις θα βασιστούν σε αυτό το βιβλίο
- Νικόλαος Παπασπύρου και Εμμανουήλ Σκορδαλάκης. Μεταγλωττιστές, Εκδόσεις Συμμετρία.
Πολύ χρήσιμο βιβλίο στα Ελληνικά που θα μοιραστεί στους φοιτητές.
Aλλα βιβλία που καλύπτουν παρόμοια θέματα:
- Andrew W. Appel, Modern Compiler Implementation in C. Cambridge University Press, 1998.
Andrew W. Appel, Modern Compiler Implementation in Java. Cambridge University Press, 1998.
http://www.cs.princeton.edu/~appel/modern
- Charles N. Fischer and Richard J. LeBlanc, Jr. Crafting a Compiler with C, Benjamin/Cummings, 1991.
- Steven S. Muchnick, Compiler Design and Implementation, Morgan Kaufmann Publishers, 1997.
- Allen I. Hollub, Compiler Design in C, Prentice Hall, 1990.
|
|
|
|