Παράκαμψη προς το κυρίως περιεχόμενο

Στόχοι Μαθήματος: Το μάθημα αυτό αποτελεί μια εισαγωγή στις διάφορες φάσεις μεταγλωττισμού μιας γλώσσας προγραμματισμού. Γίνεται αναφορά στις κύριες έννοιες των γλωσσών προγραμματισμού με στόχο την επεξήγηση των φάσεων που ακολουθεί ένας μεταγλωττιστής για να μετατρέψει ένα πηγαίο πρόγραμμα στην γλώσσα μηχανής. Ως εκ τούτου ασχολείται με την λεκτική, συντακτική, σημασιολογική ανάλυση μιας αρχικής γλώσσας προγραμματισμού και την μετατροπή της σε ενδιάμεσο κώδικα και τελική γλώσσα. Τα εργαλεία flex και bison χρησιμοποιούνται για πρακτική εφαρμογή και ανάπτυξη μικρών λεκτικών αναλυτών και συντακτικών αναλυτών αντίστοιχα.

Μαθησιακά Αποτελέσματα: Με την ολοκλήρωση του μαθήματος, οι επιτυχημένοι φοιτητές πρέπει να είναι σε θέση να: (1) Να εξηγήσουν πώς η ανάλυση, οι κανονικές εκφράσεις και οι γλώσσες λειτουργούν με την εφαρμογή των λεκτικών αναλυτών. (2) Να εξηγήσουν την ανάλυση σύνταξης, την ανάλυση από πάνω προς τα κάτω και από κάτω προς τα πάνω, την εφαρμογή συντακτικών αναλυτών. (3) Να εξερευνήσουν τον τρόπο λειτουργίας της σημασιολογικής ανάλυσης και της δημιουργίας ενδιάμεσου κώδικα. (4) Να εξηγήσουν θέματα σχετικά με την οργάνωση της μνήμης και το περιβάλλον εκτέλεσης (περιβάλλον χρόνου εκτέλεσης), την κατανομή καταχωρητών και τη δημιουργία και βελτιστοποίηση του τελικού κώδικα. (5) Να υλοποιήσουν έναν απλό μεταγλωττιστή για τον επεξεργαστή MIPS. Η υλοποίηση αυτή θα πραγματοποιηθεί μέσω της γλώσσας C και των εργαλείων Flex και Bison.

Περιεχόμενο Μαθήματος: 1η εβδομάδα: Εισαγωγή, Γλώσσες προγραμματισμού, Μεταγλωττιστές, Αναγκαιότητα και ιστορική αναδρομή, Είδη μεταγλωττιστών και συναφή εργαλεία, Βασική δομή ενός μεταγλωττιστή. 2η εβδομάδα: Τυπικές γλώσσες, Γεννητικά και αναγνωριστικά μοντέλα, Γραμματικές, Ιεραρχία Chomsky, Αναγνωριστές, Κανονικές γλώσσες, Κανονικές εκφράσεις, Πεπερασμένα αυτόματα. 3η εβδομάδα: Λεκτική ανάλυση, Διαγράμματα μετάβασης, Κατασκευή του λεκτικού αναλυτή. 4η εβδομάδα: Γλώσσες χωρίς συμφραζόμενα, Διφορούμενες γλώσσες, Τρόποι παράσταστασης γλωσσών χωρίς συμφραζόμενα. 5η εβδομάδα: Συντακτική ανάλυση, αναλυτής από κάτω προς τα πάνω. 6η εβδομάδα: Ανάκτηση από σφάλματα, χρήση μεταγλωττιστών για τη δημιουργία συντακτικών αναλυτών. 7η εβδομάδα: Ενδιάμεση εξέταση, 8η εβδομάδα: Συντακτική ανάλυση, Βοηθητικές έννοιες, υπολογισμός FIRST και FOLLOW, Ανοδικοί και καθοδικοί συντακτικοί αναλυτές, Ανοδική συντακτική ανάλυση. 9η εβδομάδα: Σημασιολογική ανάλυση, Στατική σημασιολογία, Δυναμική σημασιολογία, Σημασιολογικός έλεγχος, Έλεγχος τύπων, Εξαγωγή τύπων, Κατηγορικές γραμματικές, Πίνακας συμβόλων. 10η εβδομάδα: Παραγωγή ενδιάμεσου κώδικα, Μορφές ενδιάμεσων γλωσσών, Η γλώσσα των τετράδων, Τελούμενα, Τελεστές. 11η εβδομάδα: Παραγωγή ενδιάμεσου κώδικα, Ένα απλό σχέδιο παραγωγής τετράδων, Αριθμητικές εκφράσεις, Λογικές εκφράσεις, Απλές εντολές, Σύνθετη εντολή, Εντολή if, Εντολή while, Κλήση υποπρογραμμάτων. 12η εβδομάδα: Παραγωγή τελικού κώδικα. 13η εβδομάδα: Βελτιστοποίηση κώδικα, Τεχνικές βελτιστοποίησης κώδικα. 14η εβδομάδα:  Επανάληψη-Προετοιμασία για την τελική εξέταση.