ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ
ΠΟΛΥΤΕΧΝΕΙΟ Σχολή Ηλεκτρολόγων Μηχ. και Μηχ. Υπολογιστών Μεταγλωττιστές |
Γενικές πληροφορίες | Αντικείμενο, σκοπός και στόχοι | Προαπαιτούμενα | Εργασία | Τρόπος βαθμολογίας | Βιβλιογραφία | Διδακτέα ύλη
Μάθημα: | Μεταγλωττιστές (3.4.40.8) | ||||||||||||
Εξάμηνο: | 8ο, ροή Λ (Λογισμικό Η/Υ), προαιρετικό | ||||||||||||
Κατανομή ωρών: | 2 ώρες θεωρία, 2 ώρες εργαστήριο | ||||||||||||
Ακαδημαϊκό έτος: | 2002-2003 | ||||||||||||
Διδάσκοντες: |
Κτίριο Ηλεκτρολόγων, 1.1.21, τηλ. 210-772-2487 |
||||||||||||
Βοηθοί: |
Εργαστήριο Τεχνολογίας Λογισμικού |
||||||||||||
Διαλέξεις: |
Τετάρτη 11:45-13:30, Αίθουσα 0.1.10, Κτίριο Ηλεκτρολόγων, Πολυτεχνειούπολη Ζωγράφου |
||||||||||||
Εργαστήριο: |
Τρίτη 18:00-20:00, Εργαστήριο Τεχνολογίας Λογισμικού, Πολυτεχνειούπολη Ζωγράφου |
||||||||||||
Ώρες γραφείου: |
Τετάρτη και Παρασκευή 14:00-15:00. |
||||||||||||
Ιστοσελίδα: |
Οι μεταγλωττιστές (compilers) είναι εργαλεία που μεταφράζουν προγράμματα μιας αρχικής γλώσσας προγραμματισμού σε εκτελέσιμο κώδικα μηχανής. Στο μάθημα αυτό παρουσιάζονται οι γενικές θεωρητικές αρχές αλλά και πολλές από τις πρακτικές τεχνικές που επιτρέπουν την κατασκευή μεταγλωττιστών για ένα μεγάλο αριθμό αρχικών γλωσσών.
Σκοπός του μαθήματος είναι η ισοβαρής μετάδοση γνώσεων και δεξιοτήτων που σχετίζονται με την κατασκευή μεταγλωττιστών. Μετά το πέρας του, οι σπουδαστές θα είναι σε θέση να κατασκευάζουν μόνοι τους μεταγλωττιστές για απλές γλώσσες προγραμματισμού αλλά και να ενταχθούν ομαλά σε επαγγελματικές ομάδες που κατασκευάζουν εμπορικούς μεταγλωττιστές.
Το μάθημα απευθύνεται σε σπουδαστές που διαθέτουν βασικές γνώσεις αλγορίθμων, δομών δεδομένων, γλωσσών προγραμματισμού και αρχιτεκτονικής υπολογιστών. Απαραίτητο επίσης είναι να διαθέτουν εμπειρία στον προγραμματισμό ηλεκτρονικών υπολογιστών και να είναι εξοικειωμένοι με μια γλώσσα προγραμματισμού, όπως π.χ. η C, η C++ και η Java.
Στο πλαίσιο της εργαστηριακής εξάσκησης αυτού του μαθήματος, οι σπουδαστές (ατομικά ή ομαδικά) καλούνται να κατασκευάσουν έναν πειραματικό μεταγλωττιστή για κάποια γλώσσα προγραμματισμού. Λεπτομέρειες σχετικές με την εργασία δίνονται σε ξεχωριστό φυλλάδιο.
Το Εργαστήριο Τεχνολογίας Λογισμικού θα είναι διαθέσιμο κατά προτεραιότητα στους σπουδαστές του μαθήματος τις ώρες που αναφέρονται στο ωρολόγιο πρόγραμμα, καθώς και όλες τις υπόλοιπες ώρες λειτουργίας του (χωρίς προτεραιότητα). Η φυσική παρουσία των σπουδαστών στο εργαστήριο δεν είναι υποχρεωτική. Πέραν των ωρών γραφείου, οι διδάσκοντες και οι βοηθοί του μαθήματος θα είναι διαθέσιμοι κατόπιν επικοινωνίας (κατά προτίμηση ηλεκτρονικής).
Ο τελικός βαθμός (τ) είναι συνάρτηση των βαθμών ενός σπουδαστή στις γραπτές εξετάσεις (γ) και στην εργασία (c) και υπολογίζεται ως εξής:
τ = if γ
>= 2 and c >= 2 then min {γ+c, 10}else
min{γ+c, 4}
Το άριστα στις γραπτές εξετάσεις είναι πέντε (5). Tο άριστα στην εργασία είναι μεταξύ δύο (2) και οκτώ (8), ανάλογα με το βαθμό δυσκολίας της. Ο τρόπος βαθμολόγησης της εργασίας περιγράφεται λεπτομερώς στο αντίστοιχο φυλλάδιο.
Το βασικό σύγγραμμα που θα χρησιμοποιηθεί σε αυτό το μάθημα είναι το ακόλουθο.
Συμπληρωματικά προτείνονται τα ακόλουθα βιβλία. Τα δύο τελευταία καλύπτουν ύλη αρκετά υψηλότερου επιπέδου από το παρόν μάθημα.
Εισαγωγή: μεταγλωττιστές και συναφή εργαλεία, φάσεις μεταγλώττισης, οργάνωση μεταγλωττιστή. Τυπικές γλώσσες: ορισμοί, γλώσσες, γραμματικές, αυτόματα. Λεκτική ανάλυση: λεκτικές μονάδες, σχεδίαση λεκτικού αναλυτή, υλοποίηση με το flex. Συντακτική ανάλυση: σχεδίαση συντακτικού αναλυτή από πάνω προς τα κάτω ή από κάτω προς τα πάνω, υλοποίηση με το bison. Πίνακες συμβόλων. Σημασιολογική ανάλυση: συστήματα τύπων και σημασιολογικός έλεγχος. Παραγωγή ενδιαμέσου κώδικα: μορφές ενδιάμεσου κώδικα, μετάφραση οδηγούμενη από τη σύνταξη. Βελτιστοποίηση κώδικα. Παραγωγή τελικού κώδικα: τελικός υπολογιστής, περιβάλλον εκτέλεσης, παραγωγή αποδοτικού κώδικα, παραγωγή εντολή προς εντολή. Αντικειμενοστρεφείς γλώσσες.