Μεταγλωττιστές
Κωσταντίνος Κόκκινος
Επίκουρος Καθηγητής
Μαθησιακά Αποτελέσματα
Με την ολοκλήρωση του μαθήματος οι φοιτητές/φοιτήτριες θα είναι σε θέση να:
- Κατανοούν τις γλώσσες προγραμματισμού μέσα από τη διαδικασία της συντακτικής ανάλυσης.
- Μελετούν αλγορίθμους και δομές δεδομένων μέσα από την υλοποίηση κάθε φάσης μεταγλώττισης.
- Αντιλαμβάνονται τον πραγματικό κώδικα που εκτελείται σε έναν επεξεργαστή σε σχέση με τον κώδικα που προγραμματίζεται σε υψηλό επίπεδο.
- Κατανοούν την αρχιτεκτονική του υπολογιστή που εκτελεί τον κώδικα μέσα από τη μελέτη των μηχανισμών εκτέλεσης του τελικού κώδικα.
- Μελετούν την Αρχιτεκτονική Συνόλου Εντολών μέσα από τις βελτιστοποιήσεις και την παραγωγή τελικού κώδικα.
- Σχεδιάζουν και υλοποιούν έναν πλήρη μεταγλωττιστή, από την πρώτη μέχρι την τελευταία φάση του, και μάλιστα ομαδικά, ώστε να αναπτυχθεί και η ικανότητα συνεργασίας.
Ενδεικτικό Περιεχόμενο Μαθήματος
- θεωρητικό υπόβαθρο με τη μελέτη γραμματικών, γλωσσών, αυτομάτων και μηχανών καταστάσεων, που συνοδεύεται από απαραίτητη επανάληψη ειδικών δομών δεδομένων, όπως δέντρων, γραφημάτων και πινάκων κατακερματισμού, καθώς και κλασικών αλγορίθμων διαπέρασης και κλεισίματος.
- λεκτική ανάλυση ενός αρχικού προγράμματος και προγραμματισμός του, τόσο με το χέρι, όσο και αυτόματα με τη βοήθεια του εργαλείου “flex”
- μελέτη συντακτικής ανάλυσης και κατασκευή του συντακτικού δέντρου, τόσο με το χέρι, όπου αυτό είναι εφικτό, όσο και αυτόματα με τη βοήθεια του εργαλείου “bison”
- αλγόριθμοι γραμματικών LL(1), LR(0), SLR(1), LR(k) και LALR(1)
- σημασιολογική ανάλυση – έλεγχος τύπων με τη βοήθεια κατηγορικών γραμματικών
- παραγωγή ενδιάμεσου κώδικα: απεικόνιση αφηρημένων συντακτικών δέντρων και τετράδων
- παραγωγή τελικού κώδικα: επιλογή εντολών, δέσμευση καταχωρητών τελικής αρχιτεκτονικής
- βελτιστοποιήσεις κώδικα
- θεωρητικές και εργαστηριακές ασκήσεις
- προγραμματιστική εργασία με θέμα την πλήρη κατασκευή σε C ενός μεταγλωττιστή κάποιας γλώσσας προγραμματισμού που είναι απλοποιημένη μορφή μίας από τις γλώσσες FORTRAN, PASCAL, C++