Παρουσίαση/Προβολή

(ICE1-6003) - ΧΡΗΣΤΟΣ ΤΡΟΥΣΣΑΣ, ΑΚΡΙΒΗ ΚΡΟΥΣΚΑ
Περιγραφή Μαθήματος
Μεταγλωττιστές
Υποχρεωτικό Μάθημα
Εξάμηνο 6ο
Το μάθημα "Μεταγλωττιστές" ασχολείται με τη μελέτη της δομής, των φάσεων και των λειτουργιών ενός μεταγλωττιστή, παρέχοντας στους φοιτητές τη δυνατότητα να κατανοήσουν και να εφαρμόσουν αρχές και τεχνικές που σχετίζονται με τη λεκτική, συντακτική και σημασιολογική ανάλυση γλωσσών προγραμματισμού.
Οι φοιτητές μαθαίνουν να περιγράφουν γραμματικές, να χρησιμοποιούν κανονικές εκφράσεις και να σχεδιάζουν συντακτικά δένδρα, ενώ εξοικειώνονται με εργαλείαm όπως το Flex και το Bison, για τη δημιουργία λεκτικών και συντακτικών αναλυτών. Το εργαστηριακό μέρος περιλαμβάνει την ανάπτυξη μερών ενός μεταγλωττιστή και τη δημιουργία γλώσσας προγραμματισμού, εστιάζοντας σε δεξιότητες σχεδίασης, βελτιστοποίησης και αξιολόγησης.
Διδάσκοντες:
- Επ. Καθηγητής Χρήστος Τρούσσας (ctrouss@uniwa.gr)
- Επ. Καθηγήτρια Ακριβή Κρούσκα (akrouska@uniwa.gr)
Εργαστήριο:
- Μιχάλης Ιορδανάκης (mdior@uniwa.gr)
Διαβάστε με προσοχή τις πληροφορίες για το μάθημα που ακολουθούν καθώς και τον κανονισμό του εργαστηρίου που θα βρείτε στον αντίστοιχο κατάλογο.
Ημερομηνία δημιουργίας
Παρασκευή 19 Σεπτεμβρίου 2014
-
Μαθησιακοί στόχοι
Σκοπός του μαθήματος είναι να εξηγήσει τη βασική δομή ενός μεταγλωττιστή, τις φάσεις της μεταγλώττισης και το περιβάλλον εκτέλεσης του μεταγλωττισμένου προγράμματος.
Στόχος του μαθήματος είναι να προσφέρει στους σπουδαστές την ευκαιρία να ολοκληρώσουν και να συνθέσουν τις γνώσεις τους τις σχετικές με λειτουργικά συστήματα, οργάνωση υπολογιστών,
θεωρία γλωσσών και αυτομάτων, δομές δεδομένων και προγραμματισμό
Πιο συγκεκριμένα, οι μαθησιακοί στόχοι του μαθήματος είναι οι φοιτητές, μετά την ολοκλήρωση του μαθήματος, να είναι σε θέση να:
-
περιγράψουν το ρόλο ενός μεταγλωττιστή για τη δημιουργία ενός εκτελέσιμου προγράμματος, τα μέρη στα οποία αυτός διαχωρίζεται και διακρίνουν τις διαφορές και σχέσεις του με άλλα συγγενή λογισμικά όπως ο προπεξεργαστής, διερμηνευτής, αποσφαλματωτής, συνδέτης, φορτωτής κ.ά.
-
διακρίνουν τις φάσεις μεταγλώττισης ενός πηγαίου προγράμματος και να αναγνωρίζουν το ρόλο κάθε μιας
-
περιγράφουν τη γραμματική μιας γλώσσας προγραμματισμού χρησιμοποιώντας κανονικές εκφράσεις και κανόνες παραγωγής
-
να αναγνωρίζουν τη σημασία της γραμματικής για την ανάπτυξη ενός μεταγλωττιστή
-
περιγράφουν αυτόματα πεπερασμένων καταστάσεων, να αναγνωρίζουν το ρόλο τους ως μηχανών αναγνώρισης, να δημιουργούν πίνακες μετάβασης και να τους κωδικοποιούν στο πλαίσιο της δημιουργίας λεκτικών αναλυτών
-
σχεδιάζουν συντακτικά δένδρα αναγνώρισης πηγαίου κώδικα
-
να περιγράψουν τα βήματα λειτουργίας ενός καθοδικού και ενός καθοδικού συντακτικού αναλυτή και τη συνεργασία τους με το λεκτικό και σημασιολογικό αναλυτή.
-
να κρίνουν τα προτερήματα και μειονεκτήματα των διαφορετικών προσεγγίσεων για τη δημιουργία λεκτικών και συντακτικών αναλυτών
-
περιγράψουν το ρόλο του πίνακα συμβόλων και να είναι σε θέση να επιλέξουν κατάλληλη δομή και οργάνωση ώστε να τον δημιουργήσουν
-
αναγνωρίζουν την έννοια του ενδιάμεσου κώδικα, τον τρόπο δημιουργίας του και τους τρόπους βελτιστοποίησής του
-
αναγνωρίζουν τα χαρακτηριστικά ενός τελικού κώδικα και του περιβάλλοντος εκτέλεσής του
-
να δημιουργούν κανονικές εκφράσεις και κανόνες παραγωγής για την ανάπτυξη αναλυτών με τη βοήθεια των μετα-εργαλείων flex και bison
-
να αξιολογούν τις εργαστηριακές εργασίες των συναδέλφων τους με σταθερά κριτήρια αξιολόγησης
Θεωρία
Η θεωρία περιλαμβάνει δίωρες εβδομαδιαίες διαλέξεις και μονόωρες εβδομαδιαίες ασκήσεις πράξεις. Η αξιολόγηση των θεωρητικών γνώσεων γίνεται μέσω γραπτής εξέτασης στο τέλος του εξαμήνου.
Εργαστήριο
Τα εργαστηριακά μαθήματα πραγματοποιούνται ανά δύο κάθε δεκαπέντε ημέρες, για το κάθε Τμήμα.
Το εργαστήριο δίνει την ευκαιρία στους φοιτητές να κατανοήσουν σε βάθος τη λειτουργία του εμπρόσθιου μέρους ενός μεταγλωττιστή και ειδικότερα του λεκτικού, συντακτικού και σημασιολογικού αναλυτή.
Η αξιολόγηση των γνώσεων που αποκτούν οι φοιτητές κατά τη συμμετοχή τους στις δραστηριότητες του εργαστηρίου πιστοποιείται από την αξιολόγηση των τελικών εργασιών εργαστηρίου και επιπλέον μέσω των γραπτών εξαμηνιαίων εξετάσεων του μαθήματος με κατάλληλα προς τούτο θέματα. Σημειώνεται επίσης ότι η συνεπής παρακολούθηση (παρουσία & συμμετοχή) του εργαστηρίου επιβραβεύεται βαθμολογικά.
Για περισσότερες λεπτομέρειες σχετικές με το εργαστήριο διαβάστε τον κανονισμό του εργαστηρίου.Βαθμολογία Μαθήματος
Α. Για φοιτητές που παρακολουθούν πρόγραμμα ΠΑΔΑ
Η βαθμολογία μαθήματος προκύπτει κατά 60% από το βαθμό εξέτασης θεωρίας και κατά 40% από τον τελικό βαθμό εργαστηρίου ο οποίος μπορεί να είναι από 0 έως 10.
ΠΡΟΣΟΧΗ! Ο βαθμός εργαστηρίου συνυπολογίζεται για τον τελικό βαθμό του μαθήματος ΜΟΝΟ σε περίπτωση που ο βαθμός εξέτασης θεωρίας είναι από 5.0 και άνω στα 10.0
Β. Για φοιτητές που παρακολουθούν πρόγραμμα ΤΕΙ
Ο βαθμός του θεωρητικού μέρους προκύπτει 100% από την εξαμηνιαία εξέταση του μαθήματος και θεωρείται προβιβάσιμος αν είναι άνω της βάσης. Ο βαθμός του εργαστηριακού μέρους προκύπτει από την επίδοση στο εργαστήριο και θεωρείται προβιβάσιμος αν είναι άνω της βάσης.
Περιεχόμενο μαθήματος
Στο πλαίσιο του μαθήματος διδάσκονται τα παρακάτω:
Εισαγωγή στους μεταφραστές, βασική δομή ενός μεταγλωττιστή, γραμματικές ανεξάρτητες συμφραζομένων,, κανονικές εκφράσεις, πεπερασμένα αυτόματα, λεκτική ανάλυση, γεννήτριες λεκτικών αναλυτών (Flex), συντακτική ανάλυση, κανόνες παραγωγής, ασαφείς γραμματικές, προβλέπουσα καθοδική ανάλυση και αναδρομικότητα, ανοδική ανάλυση, γεννήτριες συντακτικών αναλυτών (Bison), σημασιολογική ανάλυση, έλεγχος τύπων, δημιουργία και βελτιστοποίηση ενδιάμεσου κώδικα, δημιουργία κώδικα χαμηλού επιπέδου, οργάνωση μνήμης, πέρασμα παραμέτρων, δυναμική εκχώρηση μνήμης, σύνδεση διαδικασιών και φόρτωση εκτελέσιμου προγράμματος στη μνήμη
Προαπαιτούμενα
Oι σπουδαστές θα πρέπει να έχουν:
- μελετήσει δομές δεδομένων (πίνακες, δυναμικές λίστες κτλ) και κερματισμό (hashing) πινάκων και αρχείων.
- καλή γνώση προγραμματισμού σε γλώσσα C.
- γνώσεις λειτουργικών συστημάτων και ειδικότερα διαχείρισης μνήμης
- γνώσεις assembly
-