Μεταγλωττιστές
Κατ' επιλογήν υποχρεωτικό μάθημα ροής Λ, 8ου εξαμήνου, κωδικός 3.4.3186.8
Εξάμηνο:
Εαρινό 2025
Διδάσκων:
Κωστής Σαγώνας
(kostis (AT) cs (DOT) ntua.gr )
γρ. 1.1.21
τηλ: 210-772-2487
Ανακοινώσεις
| Υλικό:
Γενικά ,
Helios ,
Videos (2021) ,
Εργασία ,
Παλαιότερα έτη
Διαλέξεις:
12/2 |
12/2 |
14/2 |
14/2 |
26/2 |
5/3 |
7/3 |
12/3 |
12/3 |
14/3 |
14/3 |
19/3 |
19/3 |
21/3
Ανακοινώσεις
10/2/2025
Οι διαλέξεις του μαθήματος αρχίζουν την Τετάρτη 12 Φεβρουαρίου 2025 στην Αίθουσα 012 της Σχολής. Θα συζητήσουμε τον τρόπο διεξαγωγής του μαθήματος και, κατά πάσα πιθανότητα, θα κάνουμε και το πρώτο εργαστήριο.
Υλικό
Γενικά
Τα βίντεο των διαλέξεων πρoηγούμενων ετών βρίσκονται συγκεντρωμένα στα παρακάτω αποθετήρια. Σε κάποια από αυτά, είναι πιθανό να πρέπει να συνδεθείτε με τους κωδικούς σας του ΕΜΠ.
Εργασία
Εκφώνηση: Η γλώσσα προγραμματισμού Dana ( PDF)
Για να εξοικειωθείτε με τη γλώσσα, προσπαθήστε να γράψετε μικρά και μεγαλύτερα προγράμματα σε Dana, είτε απευθείας είτε μεταφράζοντας υπάρχοντα προγράμματά σας από άλλες γλώσσες προγραμματισμού (π.χ. αυτές που έχουν χρησιμοποιηθεί σε προηγούμενα έτη στο ίδιο μάθημα). Μια άλλη ιδέα είναι να δείτε τις εκφωνήσεις των ασκήσεων των εισαγωγικών προγραμματιστικών μαθημάτων εδώ και εδώ (για κάποιες από αυτές, υπάρχουν και υποδειγματικές λύσεις).
Δημοσιεύστε τα προγράμματά σας με κατάλληλα pull requests στο GitHub repository του μαθήματος , ώστε να είναι διαθέσιμα και στους υπόλοιπους. Έτσι θα δημιουργηθεί ένα σύνολο προγραμμάτων που αργότερα θα χρησιμεύσουν ως test suite για τους μεταγλωττιστές σας.
Εγχειρίδια χρήσης εργαλείων που θα σας είναι χρήσιμα στην υλοποίηση:
Για υλοποίηση με C/C++:
Για υλοποίηση με OCaml:
Για υλοποίηση με SML/NJ ή MLton:
Για υλοποίηση με Java:
Παλαιότερα έτη
Σελίδα του μαθήματος για τα ακαδημαϊκά έτη: 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 .
Διαλέξεις
Διάλεξη στο αμφιθέατρο, πρώτη ώρα 12/2/2025
Διάλεξη στο αμφιθέατρο, επόμενο δίωρο 12/2/2025
Εισαγωγή στους μεταγλωττιστές
Τρόποι υλοποίησης γλωσσών προγραμματισμού
Ιστορική αναδρομή
Δομή και φάσεις ενός μεταγλωττιστή
Διαδικασία μεταγλώττισης και ενδιάμεσες αναπαραστάσεις
Τρέχουσες τάσεις της υλοποίησης γλωσσών προγραμματισμού
Διαφάνειες εισαγωγής στους μεταγλωττιστές
Διάλεξη στο αμφιθέατρο 14/2/2025
Εισαγωγή στη λεκτική ανάλυση
Λεκτικές μονάδες (tokens)
Θέματα σχεδιασμού λεκτικής ανάλυσης στις γλώσσες προγραμματισμού
Κανονικές εκφράσεις και κανονικές γλώσσες
Από κανονικές εκφράσεις σε προδιαγραφές λεκτικών αναλυτών
Αμφισημίες και χειρισμός λαθών
Υλοποίηση λεκτικών αναλυτών
Διαφάνειες διάλεξης
Εργαστήριο λεκτικού αναλυτή με το flex 14/2/2025
Διάλεξη από απόσταση (στο helios) 26/2/2025
Διάλεξη στο αμφιθέατρο 5/3/2025
Συντακτικός αναλυτής
Αφηρημένα συντακτικά δένδρα
Σημασιολογικές ενέργειες
Μετάφραση βασισμένη στη σύνταξη
Συντακτική ανάλυση top-down
Recursive Descent Parsing
Γραμματικές LL(1)
Μετασχηματισμός σε LL(1)
Αλγόριθμος συντακτικής ανάλυσης γραμματικών LL(1)
Πίνακας LL(1) και ένα παράδειγμα χρήσης του
Διαφάνειες διάλεξης
Μαγνητοσκοπημένη διάλεξη (του 2021)
Εργαστήριο συντακτικού αναλυτή με το bison από απόσταση 7/3/2025
Διάλεξη στο αμφιθέατρο, πρώτο δίωρο 12/3/2025
Συντακτική ανάλυση top-down, ξανά
Ανασκόπηση LL συντακτικής ανάλυσης
Κατασκευή πίνακα LL(1)
Υπολογισμός συνόλων First και Follow
Συντακτική ανάλυση bottom-up
Εισαγωγή στην ανοδική συντακτική ανάλυση (bottom-up parsing)
Ολίσθηση (shift) και αναγωγή (reduce)
Ένα παράδειγμα shift-reduce parsing
Ο αλγόριθμος συντακτικής ανάλυσης LR
Διαφάνειες διάλεξης
Μαγνητοσκοπημένη διάλεξη (του 2021)
Διάλεξη στο αμφιθέατρο, έξτρα ώρα αναπλήρωσης 12/3/2025
Διάλεξη στο αμφιθέατρο, έξτρα ώρα αναπλήρωσης 14/3/2025
LR και LALR συντακτικοί αναλυτές (Συνέχεια)
Συγκρούσεις ολισθήσεων και αναγωγών (shift/reduce conflicts) και τρόποι επίλυσής τους
Χρήση συντακτικών αναλυτών
Συντακτικοί αναλυτές LALR(1)
Οι διαφάνειες και το video της διάλεξης βρίσκονται στη διάλεξη της 12/3/2025
Εργαστήριο συντακτικού αναλυτή με το bison στο αμφιθέατρο 14/3/2025
Εργαστήριο interpreter στο αμφιθέατρο 19/3/2025
Διάλεξη στο αμφιθέατρο 19/3/2025
Σημασιολογική ανάλυση
Ο ρόλος της σημασιολογικής ανάλυσης στους μεταγλωττιστές
Εμβέλεια ονομάτων
Στατική εμβέλεια ονομάτων
Δυναμική εμβέλεια ονομάτων
Εμβέλεια και πίνακες συμβόλων
Τύποι και συστήματα τύπων
Ρόλοι των τύπων στις γλώσσες προγραμματισμού
Γλώσσες με στατικά και δυναμικά συστήματα τύπων
Διαφάνειες διάλεξης
Μαγνητοσκοπημένη διάλεξη (του 2021)
Διάλεξη στο αμφιθέατρο 21/3/2025
Έλεγχος τύπων
Στατικός έλεγχος προγραμμάτων
Συστήματα τύπων και ιδιότητές τους
Τύποι στις γλώσσες προγραμματισμού
Αναπαράσταση των τύπων σε ένα μεταγλωττιστή
Έλεγχος και συμπερασμός των τύπων
Κανόνες συμπερασμού και ελέγχου τύπων
Υλοποίηση ελέγχου τύπων με χρήση σημασιολογικών κανόνων του συντακτικού αναλυτή
Διαφάνειες διάλεξης
Μαγνητοσκοπημένη διάλεξη (του 2021)
Τελευταία αλλαγή: 09/02/2025, 11:29 UTC.
webmaster (AT) courses (DOT) softlab.ntua.gr