Compilers

General

  • Code: ΠΛΕ08012
  • Semester:
  • Study Level: Undergraduate
  • Course type:
  • Teaching and exams language: Greek
  • The course is offered to Erasmus students
  • Teaching Methods (Hours/Week): Lectures (2) / Practice Exercises (1) / Laboratory Exercises (1)
  • ECTS Units: 5
  • Course homepage: https://elearning.cm.ihu.gr/course/view.php?id=547

Course Contents

  • Εισαγωγή στους Μεταγλωττιστές. Φάσεις μεταγλώττισης. Ανάπτυξη μεταγλωττιστών.
  • Λεκτική ανάλυση.
  • Γραμματική γλώσσας.
  • Κανονικές εκφράσεις.
  • Υλοποίηση λεκτικών αναλυτών.
  • Πεπερασμένα αυτόματα και διαγράμματα μετάβασης.
  • Συντακτική ανάλυση.
  • Κατηγορίες αλγορίθμων συντακτικής ανάλυσης: καθολικοί, από πάνω προς τα κάτω, από κάτω προς τα πάνω.
  • Συντακτικό δένδρο.
  • Αυτόματα Στοίβας.
  • Συντακτικοί αναλυτές από πάνω προς τα κάτω (top-down).
  • LL και LR γραμματικές.
  • Κατασκευή πίνακα συντακτικής ανάλυσης.
  • Οι έννοιες της ελάττωσης και ολίσθησης. Συγκρούσεις.
  • Γεννήτριες συντακτικών αναλυτών.
  • Πίνακας συμβόλων.
  • Σημασιολογική ανάλυση και γραμματικές ιδιοτήτων.
  • Παραγωγή ενδιάμεσου κώδικα.
  • Κώδικας τριών διευθύνσεων.
  • Παραγωγή Τελικού Κώδικα.

Educational Goals

This course introduces a number of important concepts concerning the design and implementation of programming language compilers. Concepts that are discussed are compiler’s structure, lexical analysis, parsing, syntax-directed translation, abstract syntax trees, semantic analysis, types and type checking, intermediate languages, program analysis, program optimization, symbol table, code generation and runtime systems. On successful completion of this course, students will be able to deeply understand how a program written in a high-level language is systematically translated into a program written in low-level assembly language more suited to machines. In addition, students will be able to construct small scale compilers by using a set of free tools.

General Skills

  • Αυτόνομη Εργασία Ομαδική Εργασία.
  • Σχεδιασμός και Διαχείριση Έργων.
  • Ανάλυση και σχεδίαση αλγοριθμικών διαδικασιών.
  • Προαγωγή της ελεύθερης, δημιουργικής και επαγωγικής σκέψης.
  • Αναζήτηση, ανάλυση και σύνθεση δεδομένων και πληροφοριών, με τη χρήση και των απαραίτητων τεχνολογιών.

Teaching Methods

  • Θεωρητική από έδρας διδασκαλία με συζήτηση και ενεργή συμμετοχή των φοιτητών. Κατά την διάρκεια του μαθήματος γίνονται παρουσιάσεις σε power point.
  • Εργαστηριακή εξάσκηση στη δημιουργία μεταγλωττιστών κατά τμήματα.

Use of ICT means

  • Χρήση εξειδικευμένου λογισμικού. Υποστήριξη μαθησιακής διαδικασίας μέσω της ηλεκτρονικής πλατφόρμας Moodle.
  • Ηλεκτρονικές Ασκήσεις Αυτοαξιολόγησης.
  • Επικοινωνία με φοιτητές μέσω e-mail και της ιστοσελίδας του μαθήματος.

Teaching Organization

ActivitySemester workload
Lectures26
Practice Exercises13
Laboratory Exercises13
Writing laboratory reports, papers, etc.21
Autonomous Study52
Total125

Students Evaluation

Ο τελικός βαθμός του μαθήματος διαμορφώνεται από τον σταθμισμένο μέσο όρο των βαθμών του θεωρητικού και του εργαστηριακού μέρους.

  1. Ο βαθμός του θεωρητικού μέρους διαμορφώνεται από την γραπτή τελική εξέταση η οποία περιλαμβάνει:
    • Ερωτήσεις πολλαπλής επιλογής.
    • Επίλυση προβλημάτων εφαρμογής των γνώσεων που αποκτήθηκαν.
    • Ερωτήσεις σύντομης απάντησης.
    • Συγκριτική αξιολόγηση στοιχείων θεωρίας.
  2. Ο βαθμός του εργαστηριακού μέρους διαμορφώνεται ως εξής:
    • κατά 30% από εργασίες που ανατίθενται στους φοιτητές κατά τη διάρκεια του εξαμήνου και παραδίδονται σε καθορισμένες ημερομηνίες.
    • κατά 70% από την τελική εξέταση των εργαστηριακών δεξιοτήτων τους.

Recommended Bibliography

Συγγράμματα μέσω του συστήματος ΕΥΔΟΞΟΣ:

  1. Μεταγλωττιστές αρχές, τεχνικές & εργαλεία, Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman, 2011.
  2. Μεταγλωττιστές Γλωσσών Προγραμματισμού, Θεωρία και Πράξη, Κ. Λάζος, Κατσαρός, Καραϊσκος, 2004 (3η έκδοση).

Συμπληρωματική προτεινόμενη βιβλιογραφία:

  1. Πραγματολογία των γλωσσών προγραμματισμού, Michael L. Scott, 2009.
  2. Μεταγλωττιστές, Παπασπύρου, Σκορδαλάκη, 2002.