ΑΡΧΕΣ ΓΛΩΣΣΩΝ ΚΑΙ ΜΕΤΑΦΡΑΣΤΩΝ

Τίτλος Μαθήματος:               ΑΡΧΕΣ ΓΛΩΣΣΩΝ ΚΑΙ ΜΕΤΑΦΡΑΣΤΩΝ

Κωδικός Μαθήματος:           506

Εξάμηνο διδασκαλίας:          5ο Εξάμηνο

Προαπαιτούμενα:                 

 

Σκοπός του μαθήματος

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

 

Στόχος του μαθήματος

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

 

Περιγραφή του μαθήματος

Βασική δομή ενός μεταγλωττιστή. Τυπικές γλώσσες: κανονικές γλώσσες, γλώσσες χωρίς συμφραζόμενα, κατηγορικές γραμματικές. Λεκτική ανάλυση: κανονικές εκφράσεις, πεπερασμένα αυτόματα, γεννήτριες λεκτικών αναλυτών. Συντακτική ανάλυση: συντακτικοί αναλυτές, καθοδική (top-down) ανάλυση, ανοδική (bottom-up) ανάλυση, αναδρομικότητα, ανάνηψη από σφάλματα, γεννήτριες συντακτικών αναλυτών. Πίνακας συμβόλων. Σημασιολογική ανάλυση: είδη σηµασιολογικών ελέγχων, συστήματα τύπων, δυναμικός έλεγχος τύπων. Παραγωγή ενδιάμεσου κώδικα. Βελτιστοποίηση κώδικα. Παραγωγή τελικού κώδικα. Ζητήματα οργάνωσης της μνήμης, μεταβίβασης παραμέτρων και δυναμικής εκχώρησης μνήμης. Σύνδεση διαδικασιών και φόρτωση εκτελέσιμου προγράμματος στη μνήμη. Μεταγλώττιση µη-κλασικών γλωσσών προγραμματισμού.

Εργαστήριο Μαθήματος: Χρήση μεταεργαλείων για τη δημιουργία λεκτικών αναλυτών (lex) και συντακτικών αναλυτών (yacc). Μεταγλώττιση κώδικα με σφάλματα και μελέτη των προβλημάτων. Μελέτη προβλημάτων παραγωγής κώδικα με διαφορετικούς μεταγλωττιστές.

 

Ενδεικτική Βιβλιογραφία

  1. Compilers, Principles, Techniques and Tools, A.V. AHO, R. SETHI, J.D. ULLMANN, Addison-Wesley, 1985.
  2. The Theory of Parsing, Translation, and Compiling: Vol. 1, A.V. AHO, J.D. ULLMANN, G. FORSYTHE, Prentice-Hall Series in Automatic Computation, 1972.
  3. The Theory of Parsing, Translation, and Compiling: Vol. 2, Prentice-Hall Series in Automatic Computation, A.V. AHO, J.D. ULLMANN, G. FORSYTHE, 1973.
  4. Modern Compiler Implementation in C, A. W. Appel, Cambridge University Press, 2004.
  5. Μεταγλωττιστές, Ν. Παπασπύρου, Ε. Σκορδαλάκης, Εκδόσεις Συμμετρία, 2002

Writing Compilers & Interpreters, Mak RONALD, Wiley 1996.