3634 Μεταγλωττιστές

Μάθημα Επιλογής, Ζ’ εξάμηνο, 6 μονάδες ECTS

Διδάσκων: Μέλος ΕΔΙΠ Δρ. Αθανάσιος Ανδρούτσος

URL: https://eclass.aueb.gr/courses/INF320/

Περιεχόμενο

Εισαγωγή, αναγκαιότητα, αρχές και ιστορία μεταγλωττιστών, κατασκευή ενός μεταγλωττιστή. Λεκτική ανάλυση. Συντακτική ανάλυση (μηχανές SLR και LR(1)), υπολογισμός FIRST και FOLLOW. Σημασιολογική ανάλυση, εμβέλεια ονομάτων (στατική εμβέλεια, δυναμική εμβέλεια), ανάλυση τύπων, πίνακες συμβόλων, περιβάλλον εκτέλεσης, επικοινωνία με λειτουργικό σύστημα και η επίδραση της αρχιτεκτονικής Η/Υ στους μεταγλωττιστές. Δημιουργία ενδιάμεσου κώδικα, δημιουργία κώδικα μηχανής (assembly), αλγόριθμοι συλλογής σωρού, εισαγωγή στη βελτιστοποίηση κώδικα. Πρακτικές τεχνικές και εργαλεία που επιτρέπουν την κατασκευή μεταγλωττιστών. Κατασκευή ενός μεταγλωττιστή για κάποια απλή γλώσσα προγραμματισμού.

Μαθησιακά Αποτελέσματα

Μετά την επιτυχή ολοκλήρωση του μαθήματος, οι φοιτητές θα είναι σε θέση:

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

Προαπαιτούμενα Μαθήματα

Για να εγγραφεί στο μάθημα, ο φοιτητής πρέπει να έχει εξεταστεί επιτυχώς σε προηγούμενο εξάμηνο είτε στο μάθημα «Δομές Δεδομένων» είτε στο μάθημα «Αυτόματα και Πολυπλοκότητα». Όμως, συνιστάται στους φοιτητές να έχουν εξεταστεί επιτυχώς σε προηγούμενο εξάμηνο και στα δύο αυτά μαθήματα καθώς και στα μαθήματα «Εισαγωγή στον Προγραμματισμό Υπολογιστών», «Προγραμματισμός Υπολογιστών με JAVA» και «Λειτουργικά Συστήματα».

Συνιστώμενη Βιβλιογραφία

  • "Compilers Principles, Techniques and Tools,'' A.V.Aho, R. Sethi, J. D. Ullman. Εκδόσεις Addison Wesley, 1986.
  • «Μεταγλωτιστές», Ν.Παπασπύρου και Ε.Σκορδαλάκη, Εκδόσεις Συμμετρία, 2002.
  • "Στοιχεία Θεωρίας Υπολογισμού" H. R. Lewis, C. H. Papadimitriou. Εκδόσεις Κριτική, 2005.
  • "Modern Compiler Implementation in Java" by A.W.Appel, J.Palsberg. Cambridge University Press, 2002.

Διδακτικές και Μαθησιακές Μέθοδοι

Διαλέξεις (2 δίωρες διαλέξεις εβδομαδιαίως), σεμινάρια, ομαδικές ασκήσεις στο σπίτι, ατομικές και ομαδικές ασκήσεις σε εργαστήριο, εκπόνηση μελέτης και άσκηση πεδίου.

Μέθοδοι Αξιολόγησης/Βαθμολόγησης

O βαθμός προκύπτει από την τελική γραπτή εξέταση (50%) και από ομαδικές εργασίες στο σπίτι (50%). Για τις ομαδικές εργασίες υπάρχει προφορική εξέταση σε εργαστήριο (και ενδιάμεση εξέταση και τελική εξέταση).