ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002 Κ. Μουρλάς, Λέκτορας Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Επιμέλεια: Τίκβα Χριστίνα
Advertisements

Πέτσας Δημήτριος Παρουσίαση στο μάθημα: Ψηφιακές Βιβλιοθήκες
Copyright © 2005 Elsevier Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού Πραγματολογία των Γλωσσών Προγραμματισμού Michael L. Scott.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Λογισμικό Συστήματος Κλειώ Σγουροπούλου.
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Δεύτερο.
7.5.2 Αντικειμενοστραφής προγραμματισμός
Λεκτική Ανάλυση (lexical analysis)
-Στοίβα-Ουρά - Πλεονεκτήματα πινάκων -Δομές δεδομένων δευτερεύουσας μνήμης -Πληροφορική και δεδομένα -Παραδείγματα-Προβλήματα ψευδοκώδικα.
Δυναμικοί πίνακες Πολλές δομές δεδομένων υλοποιούνται με χρήση πινάκων
1 Α. Βαφειάδης Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Προηγμένες Αρχιτεκτονικές Υπολογιστών Κεφαλαίο Πρώτο Αρχιτεκτονική.
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ. Ε
ΜΑΘ-3122/106 Προγραμματισμός
ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών9-1 Στατικός Έλεγχος Με τον όρο στατικός έλεγχος (static checking) χαρακτηρίζεται ο έλεγχος της συντακτικής.
© GfK 2012 | Title of presentation | DD. Month
Εισαγωγικές Έννοιες Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
Εισαγωγή στον Προγραμματισμό (στη γλώσσα Java)
Αναγνώριση Προτύπων.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
ΗΥ 150 – ΠρογραμματισμόςΞενοφών Ζαμ π ούλης ΗΥ-150 Προγραμματισμός Αλγόριθμοι και Προγράμματα.
Αποκεντρωμένη Διοίκηση Μακεδονίας Θράκης ∆ιαχείριση έργων επίβλεψης µε σύγχρονα µέσα και επικοινωνία C2G, B2G, G2G Γενική Δ/νση Εσωτερικής Λειτουργίας.
ΕΙΣΑΓΩΓΗ ΜΑΘΗΜΑ 1.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών11-1 Παραγωγή Ενδιάμεσου Κώδικα Ο ενδιάμεσος κώδικας αποτελεί τη γλώσσα επικοινωνίας ανάμεσα στο εμπρόσθιο.
Γεωργαλλίδης Δημήτρης Καθηγητής Πληροφορικής
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
Ολυμπιάδα Πληροφορικής
Δομές Αναζήτησης TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Χειριζόμαστε ένα σύνολο στοιχείων όπου το κάθε.
Δομές Δεδομένων 1 Στοίβα. Δομές Δεδομένων 2 Στοίβα (stack)  Δομή τύπου LIFO: Last In - First Out (τελευταία εισαγωγή – πρώτη εξαγωγή)  Περιορισμένος.
Συνδυαστικά Κυκλώματα
Μοντέλα Συστημάτων Παρουσιάσεις των συστημάτων των οποίων οι απαιτήσεις αναλύονται.
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Ανάπτυξη Πρωτοτύπου Λογισμικού
Κεφάλαιο 6: Εισαγωγή στον προγραμματισμό Φυσικές και τεχνητές γλώσσες.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.
Ενότητα Α.4. Δομημένος Προγραμματισμός
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
Καθηγητής: Σπύρος Ξουργιάς1 Η Έννοια του Προγράμματος Ακριβής προσδιορισμός προβλήματος Ακριβής προσδιορισμός προβλήματος Ανάπτυξη αντίστοιχου αλγορίθμου.
Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία:  να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεδιασμός Σχεσιακών Σχημάτων.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακό Μοντέλο.
ΛΑΔΑΚΑΚΟΣ ΘΑΛΗΣ Α.Μ ΔΙΑΧΕΙΡΗΣΗ ΠΛΗΡΟΦΟΡΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
Computers: Information Technology in Perspective By Long and Long Copyright 2002 Prentice Hall, Inc. Προγραμματισμός Η / Υ 6 η Διάλεξη.
Δομές Δεδομένων - Ισοζυγισμένα Δυαδικά Δένδρα (balanced binary trees)
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 9: Παραγωγή Ενδιάμεσου Κώδικα (Ενδιάμεσες Γλώσσες) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά.
Περιεχόμενα Μαθήματος
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Α) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
9-1 ΜΑΘΗΜΑ 9 ο Δυαδικά Δένδρα, Διάσχιση Δυαδικών Δένδρων Υλικό από τις σημειώσεις Ν. Παπασπύρου, 2006.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Εισαγωγή στον προγραμματισμό Μέρος 3 ο Προγραμματιστικά περιβάλλοντα § 6.7.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
Κεφάλαιο 4 :: Σημασιολογική Ανάλυση
2ο ΓΥΜΝΑΣΙΟ ΣΗΤΕΙΑΣ - ΤΑΞΗ Γ'
Μεταγλωττιστές (Compilers) (Θ)
Μεταγράφημα παρουσίασης:

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

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-2 Τι είναι οι μεταγλωττιστές; Μετασχηματισμός από μία αναπαράσταση ενός προγράμματος σε μία άλλη Η τυπική εικόνα

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-3 Το μοντέλο της ανάλυσης-σύνθεσης Synthesis - Analysis –Ανάλυση του πηγαίου κώδικα –Σύνθεση του κώδικα στην τελική γλώσσα Άλλα προγράμματα που ακολουθούν τον κύκλο αυτό και που σε γενικές γραμμές μπορούν να χαρακτηριστούν μεταγλωττιστές: –Συστήματα διαμόρφωσης κειμένου (text formatters, π.χ. TeX) –Μεταγλωττιστές σιλικόνης (Silicon Compilers)

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-4 Απαιτήσεις κατασκευής μεταγλωττιστή Απαιτήσεις από τον μεταγλωττιστή –αξιοπιστία –γρήγορη εκτέλεση –μικρές απαιτήσεις σε μνήμη –καλά διαγνωστικά μηνύματα –δυνατότητα ανάνηψης από λάθη –μεταφερσιμότητα –εύκολη συντήρηση Απαιτήσεις από τον τελικό κώδικα –γρήγορη εκτέλεση –μικρές απαιτήσεις σε μνήμη

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-5 Πηγαίος Κώδικας Διαμορφωμένος με στόχο την εύκολη ανάγνωση –Εκφραστικός: προσεγγίζει την ανθρώπινη γλώσσα –Περιέχει πλεονασμούς int expr(int n) { int d; d = 4 * n * n * (n + 1) * (n + 1); return d; }

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-6 Κώδικας Μηχανής Βελτιστοποιημένος για εκτέλεση από το υλικό Έλλειψη ασάφειας, πλεονασμού Κατακερματισμός της πληροφορίας για τον τελικό στόχο lda $30,-32($30) stq $26,0($30) stq $15,8($30) bis $30,$30,$15 bis $16,$16,$1 stl $1,16($15) lds $f1,16($15) sts $f1,24($15) ldl $5,24($15) bis $5,$5,$2 s4addq $2,0,$3 ldl $4,16($15) mull $4,$3,$2 ldl $3,16($15) addq $3,1,$4 mull $2,$4,$2 ldl $3,16($15) addq $3,1,$4 mull $2,$4,$2 stl $2,20($15) ldl $0,20($15) br $31,$33 $33: bis $15,$15,$30 ldq $26,0($30) ldq $15,8($30) addq $30,32,$30 ret $31,($26),1

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-7 Πώς θα γίνει η μεταγλώττιση; Σε βήματα : σταδιακή μετατροπή του πηγαίου κώδικα σε ενδιάμεσες αναπαραστάσεις κατάλληλες για τον εκάστοτε κάθε φορά στόχο (π.χ. έλεγχο ορθότητας, βελτιστοποίηση κώδικα κ.α.). Κάθε βήμα απομακρύνει την αναπαράστασή μας από την γλώσσα του πηγαίου κώδικα και πλησιάζει το επίπεδο της μηχανής.

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-8 Οι φάσεις λειτουργίας ενός μεταγλωττιστή 1: Λεκτικές μονάδες (tokens) 2: Συντακτικό δένδρο 3: Ενδιάμεσος κώδικας

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-9 Λεκτική Ανάλυση Έστω η έκφραση position := initial + rate * 60 Ο λεκτικός αναλυτής παράγει την ακόλουθη έξοδο λεκτικών μονάδων: id(1) op(:=) id(2) op(+) id(3) op(*) cons(60) όπου id:identifier, op:operator και cons:constant Ο πίνακας συμβόλων έχει ως εξής:

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-10 Συντακτική Ανάλυση Η συντακτική ανάλυση κατασκευάζει μία δομή που περιγράφει τις σχέσεις των λεκτικών μονάδων

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-11 Σημασιολογική Ανάλυση Π.χ. έλεγχος των παραμέτρων ενός τελεστή και τροποποίηση του συντακτικού δένδρου

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-12 Ενδιάμεσος Κώδικας & Βελτιστοποίηση Ενδιάμεσος Κώδικας temp1 := int_2_real(60) temp2 := id(3) * temp1 temp3 := id(2) + temp2 id(1) := temp3 Βελτιστοποίηση: temp1 := id(3) * 60.0 id(1) := id(2) + temp1

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-13 Η γενικότερη εικόνα Source code Compiler Κώδικας σε γλώσσα Assembly Assembler Κώδικας μηχανής Εκτελέσιμο πρόγραμμα Εκτέλεση Linker ΟS Loader

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-14 Οργάνωση σε εμπρόσθιο και οπίσθιο τμήμα Front end (machine- independent) Back end Πλεονεκτήματα: π.χ. Κ μεταγλωττιστές για Ν τελικούς Η/Υ Χρειαζόμαστε: N οπίσθια τμήματα & K εμπρόσθια, αντί Κ*Ν μεταγλωττιστές

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-15 Οργάνωση σε περάσματα Πέρασμα (pass) : ανάγνωση του πηγαίου κώδικα Ο αριθμός των περασμάτων εξαρτάται από την αρχική και τελική γλώσσα καθώς και το περιβάλλον εκτέλεσης του μεταγλωττιστή (λιγότερη μνήμη = λιγότερα περάσματα). Pascal : 1 πέρασμα Algol 68 : 3 περάσματα Αναδρομική κατάβαση (backpatching) για περιορισμό των περασμάτων

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-16 Ένας απλός μεταγλωττιστής Πρόβλημα: Δημιουργία ενός μεταγλωττιστή για μετατροπή αριθμητικών εκφράσεων από προθεματικό (infix) σε επιθεματικό (postfix) συμβολισμό. Π.χ.3+4*5  * + Ο επιθεματικός συμβ. είναι κατάλληλος για εκτέλεση από μηχανές που χρησιμοποιούν στοίβα. Προσδιορισμός - Περιγραφή της γλώσσας σε επίπεδο: –Συντακτικό –Σημασιολογικό

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-17 Παράδειγμα Γραμματικής Για την μετατροπή από προ- σε επιθεματικό κώδικα 1.expr = expr + expr 2.expr = expr - expr 3.expr = expr * expr 4.expr = expr / expr 5.expr = ( expr ) 6.expr = digit 7.digit = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-18 Συντακτικό Δένδρο Δένδρο με κόμβους: –Ρίζα το αρχικό σύμβολο της γραμματικής –Εσωτερικούς κόμβους που αντιστοιχούν σε μη- τερματικά σύμβολα –Φύλλα που αντιστοιχούν σε τερματικά σύμβολα. Συντακτικός αναλυτής (parser): κατασκευάζει το συντακτικό δένδρο.

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-19 Είδη συντακτικής ανάλυσης Από κάτω προς τα πάνω Από πάνω προς τα κάτω

ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών 1-20 Υλοποίηση Παραδείγματος