Μεταγλωττιστές
Κατ' επιλογήν υποχρεωτικό μάθημα ροής Λ, 8ου εξαμήνου, κωδικός 3.4.3186.8
Εξάμηνο:
Εαρινό 2026
Διδάσκων:
Κωστής Σαγώνας
(kostis (AT) cs (DOT) ntua.gr )
γρ. 1.1.21
τηλ: 210-772-2487
Ανακοινώσεις
| Υλικό:
Γενικά ,
Helios ,
Videos (2021) ,
Εργασία ,
Παλαιότερα έτη
Διαλέξεις:
20/2 |
20/2 |
20/2 |
27/2 |
27/2 |
27/2 |
4/3 |
6/3 |
11/3 |
13/3 |
18/3 |
27/3 |
27/3 |
1/4 |
3/4
Ανακοινώσεις
15/2/2026
Οι διαλέξεις του μαθήματος αρχίζουν την Παρασκευή 16 Φεβρουαρίου 2026 στην Αίθουσα 013 της Σχολής. Θα συζητήσουμε τον τρόπο διεξαγωγής του μαθήματος, την φετινή εργασία και τον τρόπο με τον οποίο θα γίνονται τα εργαστήρια.
Υλικό
Γενικά
Τα βίντεο των διαλέξεων πρoηγούμενων ετών βρίσκονται συγκεντρωμένα στα παρακάτω αποθετήρια. Σε κάποια από αυτά, είναι πιθανό να πρέπει να συνδεθείτε με τους κωδικούς σας του ΕΜΠ.
Εργασία
Εκφώνηση: Η γλώσσα προγραμματισμού PCL ( PDF)
Για να εξοικειωθείτε με τη γλώσσα, προσπαθήστε να γράψετε μικρά και μεγαλύτερα προγράμματα σε PCL, είτε απευθείας είτε μεταφράζοντας υπάρχοντα προγράμματά σας από άλλες γλώσσες προγραμματισμού (π.χ. αυτές που έχουν χρησιμοποιηθεί σε προηγούμενα έτη στο ίδιο μάθημα).
Μια άλλη ιδέα είναι να δείτε τις εκφωνήσεις των ασκήσεων των εισαγωγικών προγραμματιστικών μαθημάτων εδώ και εδώ (για κάποιες από αυτές, υπάρχουν και υποδειγματικές λύσεις).
Δημοσιεύστε τα προγράμματά σας με κατάλληλα pull requests στο GitHub repository του μαθήματος , ώστε να είναι διαθέσιμα και στους υπόλοιπους. Έτσι θα δημιουργηθεί ένα σύνολο προγραμμάτων που αργότερα θα χρησιμεύσουν ως test suite για τους μεταγλωττιστές σας.
Εγχειρίδια χρήσης εργαλείων που θα σας είναι χρήσιμα στην υλοποίηση:
Για υλοποίηση με C/C++:
Για υλοποίηση με OCaml:
Για υλοποίηση με SML/NJ ή MLton:
Για υλοποίηση με Java:
Παλαιότερα έτη
Σελίδα του μαθήματος για τα ακαδημαϊκά έτη: 2024-25 , 2023-24 , 2022-23 , 2021-22 , 2020-21 , 2019-20 , 2018-19 , 2017-18 , 2016-17 , 2015-16 , 2014-15 , 2013-14 , 2012-13 , 2011-12 , 2010-11 , 2009-10 , 2008-09 , 2007-08 , 2006-07 , 2005-06 , 2004-05 , 2003-04 , 2002-03 .
Διαλέξεις
Διάλεξη στο αμφιθέατρο, πρώτη ώρα 20/2/2026
Διάλεξη στο αμφιθέατρο, επόμενο δίωρο 20/2/2026
Εισαγωγή στους μεταγλωττιστές
Τρόποι υλοποίησης γλωσσών προγραμματισμού
Ιστορική αναδρομή
Δομή και φάσεις ενός μεταγλωττιστή
Διαδικασία μεταγλώττισης και ενδιάμεσες αναπαραστάσεις
Τρέχουσες τάσεις της υλοποίησης γλωσσών προγραμματισμού
Διαφάνειες εισαγωγής στους μεταγλωττιστές
Διάλεξη στο αμφιθέατρο 20/2/2026
Εισαγωγή στη λεκτική ανάλυση
Λεκτικές μονάδες (tokens)
Θέματα σχεδιασμού λεκτικής ανάλυσης στις γλώσσες προγραμματισμού
Κανονικές εκφράσεις και κανονικές γλώσσες
Από κανονικές εκφράσεις σε προδιαγραφές λεκτικών αναλυτών
Αμφισημίες και χειρισμός λαθών
Υλοποίηση λεκτικών αναλυτών
Διαφάνειες διάλεξης
Εργαστήριο λεκτικού αναλυτή με το flex 27/2/2026
Διάλεξη στο αμφιθέατρο 27/2/2026
Διάλεξη στο αμφιθέατρο 27/2/2026
Συντακτικός αναλυτής
Αφηρημένα συντακτικά δένδρα
Σημασιολογικές ενέργειες
Μετάφραση βασισμένη στη σύνταξη
Συντακτική ανάλυση top-down
Recursive Descent Parsing
Γραμματικές LL(1)
Μετασχηματισμός σε LL(1)
Αλγόριθμος συντακτικής ανάλυσης γραμματικών LL(1)
Πίνακας LL(1) και ένα παράδειγμα χρήσης του
Διαφάνειες διάλεξης
Μαγνητοσκοπημένη διάλεξη (του 2021)
Διάλεξη στο αμφιθέατρο 4/3/2026
Συντακτική ανάλυση top-down, ξανά
Ανασκόπηση LL συντακτικής ανάλυσης
Κατασκευή πίνακα LL(1)
Υπολογισμός συνόλων First και Follow
Συντακτική ανάλυση bottom-up
Εισαγωγή στην ανοδική συντακτική ανάλυση (bottom-up parsing)
Ολίσθηση (shift) και αναγωγή (reduce)
Ένα παράδειγμα shift-reduce parsing
Ο αλγόριθμος συντακτικής ανάλυσης LR
Διαφάνειες διάλεξης
Μαγνητοσκοπημένη διάλεξη (του 2021)
Εργαστήριο συντακτικού αναλυτή με το bison 6/3/2026
Εργαστήριο συγγραφής προγραμμάτων PCL στο SoftLab ή στο σπίτι 11/3/2026
Εργαστήριο κατασκευής αφηρημένου συντακτικού δένδρου με το bison στο helios 13/3/2026
Εργαστήριο interpreter στο αμφιθέατρο 18/3/2026
Διάλεξη στο αμφιθέατρο, πρώτο δίωρο 27/3/2026
LR και LALR συντακτικοί αναλυτές
Ανασκόπηση ανοδικής συντακτικής ανάλυσης
Ο αλγόριθμος συντακτικής ανάλυσης LR
Στοιχεία LR(0) και LR(1)
Κατασκευή του DFA ενός συντακτικού αναλυτή LR(1)
Συγκρούσεις ολισθήσεων και αναγωγών (shift/reduce conflicts) και τρόποι επίλυσής τους
Χρήση συντακτικών αναλυτών
Συντακτικοί αναλυτές LALR(1)
Διαφάνειες διάλεξης
Μαγνητοσκοπημένη διάλεξη (του 2021)
Διάλεξη στο αμφιθέατρο, δεύτερο δίωρο 27/3/2026
Σημασιολογική ανάλυση
Ο ρόλος της σημασιολογικής ανάλυσης στους μεταγλωττιστές
Εμβέλεια ονομάτων
Στατική εμβέλεια ονομάτων
Δυναμική εμβέλεια ονομάτων
Εμβέλεια και πίνακες συμβόλων
Τύποι και συστήματα τύπων
Ρόλοι των τύπων στις γλώσσες προγραμματισμού
Γλώσσες με στατικά και δυναμικά συστήματα τύπων
Διαφάνειες διάλεξης
Μαγνητοσκοπημένη διάλεξη (του 2021)
Διάλεξη στο αμφιθέατρο 1/4/2026
Εργαστήριο σημασιολογικού αναλυτή στο αμφιθέατρο 3/4/2026
Τελευταία αλλαγή: 15/02/2026, 02:41 UTC.
webmaster (AT) courses (DOT) softlab.ntua.gr