Σχεδίαση γλωσσών προγραμματισμού και μεταγλωττιστές

Κατσαρός Παναγιώτης

Περιγραφή

Το μάθημα αυτό ασχολείται με τις αρχές στις οποίες βασίζεται ο σχεδιασμός των σύγχρονων γλωσσών προγραμματισμού και η υλοποίηση των μεταγλωττιστών, οι οποίοι μεταφράζουν προγράμματα γραμμένα σε μία γλώσσα υψηλού επιπέδου σε προγράμματα γραμμένα σε κώδικα μηχανής. Ανάμεσα στις ενότητες που εξετάζονται είναι λεξική, συντακτική και σημασιολογική ανάλυση, η κατευθυνόμενη από τη σύνταξη μετάφραση, τα συστήματα τύπων και ο έλεγχος τύπου και η παραγωγή κώδικα.

 

 

CC - Αναφορά - Παρόμοια Διανομή
Διδάσκοντες

Διδάσκων: Παναγιώτης Κατσαρός, Επίκουρος Καθηγητής

Συνεργάτης ανάπτυξης περιεχομένου: Εμμανουέλα Στάχτιαρη

Περιεχόμενο μαθήματος
  • Σχεδίαση Γλωσσών Προγραμματισμού
    • Ιστορία εξέλιξης ΓΠ
    • Δομή και Αρχές σχεδίασης
    • Χαρακτηριστικά ΓΠ
  • Υλοποίηση Γλωσσών (μεταγλωττιστές)
    • Λεξική Ανάλυση
    • Συντακτική Ανάλυση
    • Σημασιολογική Ανάλυση
    • Δημιουργία Κώδικα
Μαθησιακοί στόχοι

Mαθησιακοί στόχοι

Οι φοιτητές αναμένεται στα πλαίσια του μαθήματος να

  • εξοικειωθούν με μία κριτική προσέγγιση των γλωσσών προγραμματισμού μέσα από τη συγκριτική ανάλυση των χαρακτηριστικών τους
  • κατανοήσουν τις αντικρουόμενες επιλογές σχεδίασης γλωσσών προγραμματισμού και το πώς αυτές επηρεάζουν την αποδοχή τους
  • κατανοήσουν τις τάσεις στη χρήση γλωσσών προγραμματισμού ώστε να είναι προετοιμασμένοι για νέες προγραμματιστικές μεθόδους, υποδείγματα και εργαλεία
  • γνωρίσουν όλο τον κύκλο σχεδίασης γλωσσών προγραμματισμού
  • αποκτήσουν εμπειρία υλοποίησης μεταγλωττιστή

 

Δεξιότητες-γενικοί μαθησιακοί στόχοι

Γενικότερα, οι φοιτητές αναμένεται μετά το πέρας του μαθήματος      

  • να εφαρμόζουν τη γνώση της θεωρίας στην πράξη
  • αναζητούν, αναλύουν και συνθέτουν δεδομένα και πληροφορίες, με τη χρήση απαραίτητων τεχνολογιών στο πεδίο της πληροφορικής
Προαπαιτούμενα

Επιθυμητή βασική γνώση Θεωρίας Υπολογισμού

Βιβλιογραφία
  1. Κ. Λάζος, Π. Κατσαρός, Ζ. Καραϊσκος, "Μεταγλωττιστές Γλωσσών Προγραμματισμού: Θεωρία & Πράξη", 3η έκδοση/2004, ISBN: 960-87723-4-6 Κωδικός Βιβλίου στον Εύδοξο: 3873
  2. M. L. Scott, "Πραγματολογία Γλωσσών Προγραμματισμού", 2η έκδοση/2009, Εκδόσεις Κλειδάριθμος, ISBN: 978-960-461-230-7 Κωδικός Βιβλίου στον Εύδοξο: 13858

Επιπλέον συνιστώμενη βιβλιογραφία:

  • Βιβλία - κείμενα (Text/books)
    • Βιβλιογραφία
      1. J. C. Mitchell, "Concepts in Programming Languages", 1st edition/2002, Cambridge University Press, ISBN: 978-0521780988
      2. Α. V. Aho, M. S. Lam, R. Sethi, J. D. Ullman, "Compilers: Principles, Techniques, and Tools", 2nd edition/2006, Addison Wesley, ISBN: 978-0321486813
      3. R. W. Sebesta, "Concepts of Programming Languages", 10th edition/2012, Addison-Wesley, ISBN: 978-0131395312
    • Συγγράμματα
      1. Κ. Λάζος, Π. Κατσαρός, Ζ. Καραϊσκος, "Μεταγλωττιστές Γλωσσών Προγραμματισμού: Θεωρία & Πράξη", 3η έκδοση/2004, ISBN: 960-87723-4-6 Κωδικός Βιβλίου στον Εύδοξο: 3873
      2. M.L. Scott, “Π Πραγματολογία Γλωσσών Προγραμματισμού", 2η έκδοση/2009, Εκδόσεις Κλειδάριθμος, ISBN: 978-960-461-230-7 Κωδικός Βιβλίου στον Εύδοξο: 13858
  • Online Readings

Ενότητες

Γλώσσες με δομή block: Η ενότητα καλύπτει τα θέματα: Μοντέλο μηχανής εκτέλεσης, Εμβέλεια και διάρκεια ζωής, Inline blocks, Στατική και δυναμική εμβέλεια, Συναρτήσεις και υποπρογράμματα, Εγγραφές ενεργοποίησης.

 

Λέξεις κλειδιά: Μοντέλο μηχανής εκτέλεσης, Διάρκεια ζωής, Inline blocks, Στατική εμβέλεια, Δυναμική εμβέλεια, Συναρτήσεις, Υποπρογράμματα, Εγγραφές ενεργοποίησης.

Εμβέλεια:Η ενότητα καλύπτει τα θέματα: Χρήση στοίβας - εγγραφές ενεργοποιήσης. Πέρασμα παραμέτρων. Στατική και δυναμική Εμβέλεια. Κανόνες εμβέλειας. Διαχείριση μνήμης. Εκχώρηση μνήμης στατική, στοίβας και σωρού.

 

Λέξεις κλειδιά: Χρήση στοίβας, Πέρασμα παραμέτρων. Στατική εμβέλεια, Δυναμική εμβέλεια, Κανόνες εμβέλειας, Στατική εκχώρηση μνήμης. Εκχώρηση μνήμης στοίβας,  Εκχώρηση μνήμης σωρού.

Λεξική Ανάλυση: Η ενότητα καλύπτει τα θέματα: Βασικές έννοιες και ρόλος Λ.Α.  Πρότυπα συμβολοσειρών: κανονικές εκφράσεις. Λεξική ανάλυση και αυτόματα. Χαρακτηριστικά λεξικής δομής Γ.Π. Σύγκριση λεξικής δομής Γ.Π. Γεννήτριες Λ.Α. Σύνταξη Λ.Α. με το εργαλείο Flex

 

Λέξεις κλειδιά: Λεξική ανάλυση, Πρότυπα συμβολοσειρών, Κανονικές εκφράσεις, Αυτόματα, Λεξική δομής Γ.Π, Γεννήτριες Λ.Α. Σύνταξη Λ.Α.

Συντακτική Ανάλυση: Η ενότητα καλύπτει τα θέματα: Βασικές έννοιες και ρόλος της Σ.Α. Γραμματικές Χωρίς Συμφραζόμενα. Σύνταξη και σημασία προγραμμάτων. Σύνταξη δηλωτικών και αλγοριθμικών γλωσσών. Αλγόριθμοι Σ.Α.

 

Λέξεις κλειδιά: Συντακτική Ανάλυση, Γραμματικές Χωρίς Συμφραζόμενα. Σημασία προγραμμάτων,  Σύνταξη δηλωτικών γλωσσών, Σύνταξη αλγοριθμικών γλωσσών, Αλγόριθμοι Σ.Α.

Καθοδική Συντακτική Ανάλυση - Αλγόριθμος LL(1): Η ενότητα καλύπτει τα θέματα:  Τι είναι η Καθοδική ανάλυση; Καθοδική ανάλυση με οπισθοδρόμηση. Σύνολα FIRST και FOLLOW για συντακτική ανάλυση. Ανάλυση LL(1).

 

Λέξεις κλειδιά: Καθοδική ανάλυση, Καθοδική ανάλυση με οπισθοδρόμηση, Σύνολα FIRST & Follow, Ανάλυση LL(1).

Αλγόριθμος Προβλέπουσας Αναδρομικής Κατάβασης: Η ενότητα καλύπτει τα θέματα:  Ανάλυση προβλέπουσας αναδρομικής κατάβασης με σύνολα FIRST & Follow.

 

Λέξεις κλειδιά: Προβλέπουσα αναδρομική κατάβαση, Σύνολα FIRST & Follow.

Αλγόριθμος LR Ανοδικής Συντακτικής Ανάλυσης:Η ενότητα καλύπτει τα θέματα: Γενικά για την ανοδική ανάλυση. Ανοδική ανάλυση ώθησης – απλοποίησης. Ανάλυση LR.

 

Λέξεις κλειδιά: Ανοδική ανάλυση, Ανοδική ανάλυση ώθησης – απλοποίησης, Ανάλυση LR.

Πίνακες LR Ανάλυσης:

Η ενότητα καλύπτει τα θέματα: Αναλυτής LR ώθησης – απλοποίησης. Πίνακες ανάλυσης LR(1). Συγκρούσεις ενεργειών. Παραλλαγές ανάλυσης LR όπως LR(0), SLR(1), LALR(1), Γλώσσες χωρίς συμφραζόμενα.

 

Λέξεις κλειδιά:LR ώθησης – απλοποίησης, Συγκρούσεις ενεργειών, LR(0), SLR(1), LALR(1), Γλώσσες χωρίς συμφραζόμενα.

Ανάκαμψη από Συντακτικά Λάθη: Η ενότητα καλύπτει τα θέματα: Ανάνηψη λαθών. Ανάνηψη «πανικού» στην ανάλυση LL(1). Εντοπισμός λάθους στην ανάλυση LR.

 

Λέξεις κλειδιά: Ανάνηψη λαθών, Ανάνηψη «πανικού», Εντοπισμός λάθους.

Σημασιολογική Ανάλυση: Η ενότητα καλύπτει τα θέματα: Σημασιολογική ανάλυση. Γραμματικές ιδιοτήτων. Συνθέσιμες και κληρονομήσιμες ιδιότητες.

 

Λέξεις κλειδιά: Σημασιολογική ανάλυση, Γραμματικές ιδιοτήτων, Συνθέσιμες ιδιότητες, Κληρονομήσιμες ιδιότητες.

Μέθοδοι Σημασιολογικής Ανάλυσης: Η ενότητα καλύπτει τα θέματα: S-Γραμματικές ιδιοτήτων. L-Γραμματικές ιδιοτήτων.

 

Λέξεις κλειδιά: S-Γραμματικές ιδιοτήτων. L-Γραμματικές ιδιοτήτων.

Σχήματα Μετάφρασης & Παραδείγματα Σημασιολογικής Ανάλυσης: Η ενότητα καλύπτει τα θέματα: Σχήματα μετάφρασης. Παραδειγμα γραμματικής ιδιοτήτων για την ανάπτυξη του συντακτικού δένδρου των εκφράσεων. Εφαρμογή ελέγχου τύπων, δηλώσεων τύπων και ελέγχου τύπων αριθμητικών εκφράσεων στο παράδειγμα.

 

Λέξεις κλειδιά: Σχήμα μετάφρασης, Έλεγχος τύπου, Δηλώση τύπου.

Πίνακας Συμβόλων: Η ενότητα καλύπτει τα θέματα: Τι είναι ο πίνακας συμβόλων και ποιες λειτουργίες υποστηρίζει; Σε ποιες δομές μπορεί να οργανωθεί;

 

Λέξεις κλειδιά: Πίνακας συμβόλων. Οργάνωση πίνακα συμβόλων.

Συστήματα Τύπων: Η ενότητα καλύπτει τα θέματα: Γλώσσες με τύπους και χωρίς τύπους. Λάθη εκτέλεσης και ασφάλεια. Έλεγχος τύπων. Μη ασφαλή προγράμματα. Ιδιότητες συστήματος τύπων. Ορισμός συστήματος τύπων. Το Θεώρημα της ευρωστίας τύπων. Παραγωγές τύπων. Καλώς ορισμένοι τύποι και συναγωγή τύπων. Συστήματα τύπων πρώτης τάξης. Λογισμός λ με τύπους. Κανόνες για βασικούς και οριζόμενους τύπους. 

 

Λέξεις κλειδιά: Γλώσσες με τύπους, Γλώσσες χωρίς τύπους, Λάθη εκτέλεσης, Ασφάλεια, Σύστημα τύπων, Θεώρημα ευρωστίας τύπων, Παραγωγή τύπων, Καλώς ορισμένοι τύποι, Συναγωγή τύπων, Συστήματα τύπων πρώτης τάξης. Λογισμός λ με τύπους, Βασικοί τύποι, Οριζόμενοι Τύποι. 

Παραγωγή Κώδικα για Αριθμητικές και Λογικές Εκφράσεις: Η ενότητα καλύπτει τα θέματα:  Δομή μεταγλωττιστή - backend. Μορφές ενδιάμεσης αναπαράστασης. Συντακτικά δένδρα. Κατευθυνόμενοι άκυκλοι γράφοι. Γράφοι ροής ελέγχου. Μηχανή στοίβας. Κώδικας τριών διευθύνσεων. Παραγωγή κώδικα για μηχανή στοίβας και λογικές εκφράσεις.  

 

Λέξεις κλειδιά: Δομή μεταγλωττιστή, Ενδιάμεση αναπαράσταση, Συντακτικά δένδρα, Κατευθυνόμενοι άκυκλοι γράφοι, Γράφοι ροής ελέγχου. Μηχανή στοίβας, Κώδικας τριών διευθύνσεων, Αριθμητικές εκφράσεις, Λογικές εκφράσεις.  

Παραγωγή Κώδικα για Εντολές Ελέγχου Ροής: Εντολές ελέγχου ροής: Η ενότητα καλύπτει τα θέματα:  Δομή και παραγωγή κώδικα. Backpatching. Παραγωγή κώδικα στο μεταγλωττιστή της YAPL. Συνάρτηση δημιουργίας εντολής. Συνάρτηση διάσχισης δένδρου. Συνάρτηση επεξεργασίας κόμβου PrintStmt.

Λέξεις κλειδιά: Backpatching. Παραγωγή κώδικα, Μεταγλωττιστής YAPL, Δημιουργία εντολής, Διάσχιση δένδρου, Επεξεργασία κόμβου PrintStmt.

Παραγωγή κώδικα συμβολικής γλώσσας του επεξεργαστή Pentium:

Η ενότητα καλύπτει τα θέματα:  Παραγωγή κώδικα: Αρχιτεκτονική Pentium, Εντολές assembly, Παράδειγμα.

 

Λέξεις κλειδιά: Παραγωγή κώδικα, Αρχιτεκτονική Pentium, Εντολές assembly.

Ανοικτό Ακαδ. Μάθημα

Ανοικτά Ακαδημαϊκά Μαθήματα
Επίπεδο: A-

Αρ. Επισκέψεων :  5536
Αρ. Προβολών :  36534