Κεφάλαιο 4 :: Σημασιολογική Ανάλυση

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Κατηγορηματικός Λογισμός
Advertisements

Βασικές έννοιες αλγορίθμων
Κληρονομικότητα. Εισαγωγή  Κληρονομικότητα (Inheritance) καλείται ο μηχανισμός με τον οποίο μία νέα κλάση που ονομάζεται παράγωγη (derived class) δημιουργείται.
Copyright © 2005 Elsevier Κεφάλαιο 2 :: Σύνταξη των γλωσσών προγραμματισμού Πραγματολογία των Γλωσσών Προγραμματισμού Michael L. Scott.
7.3.8 Μεταφραστές Ελληνογαλλική Σχολή Καλαμαρί - Τίκβα Χριστίνα.
Η Γλώσσα Προγραμματισμού LOGO
ΓΡΑΜΜΑΤΙΚΕΣ ΧΩΡΙΣ ΣΥΜΦΡΑΖΟΜΕΝΑ I
Λογισμικό Συστήματος Κλειώ Σγουροπούλου.
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
ΣΤΟΙΧΕΙΑ ΨΕΥΔΟΚΩΔΙΚΑ ΒΑΣΙΚΕΣ ΔΟΜΕΣ ΒΑΣΙΚΟΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΩΝ
Κεφάλαιο 6 Υλοποίηση Γλωσσών Προγραμματισμού
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων, Σημασιολογικές Ενέργειες.
ΕΠΛ223 - Θεωρία και Πρακτική Μεταγλωττιστών9-1 Στατικός Έλεγχος Με τον όρο στατικός έλεγχος (static checking) χαρακτηρίζεται ο έλεγχος της συντακτικής.
Εργασία Η υλοποίηση του αλγορίθμου συγχώνευσης θα πρέπει να χρησιμοποιεί την ιδέα των ροών (streams). Θα πρέπει να υπάρχουν δύο διαφορετικά είδη.
Κεφάλαιο 2ο Πεπερασμένα αυτόματα.
Η αλληλουχία των ενεργειών δεν είναι πάντα μία και μοναδική!!!
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων. Πίνακας Συμβόλων (Symbol Table) (Ι)  Είναι μια δομή στην οποία αποθηκεύονται τα ονόματα ενός προγράμματος και.
ΕΠΛ223 Θεωρία και Πρακτική Μεταγλωττιστών Εαρινό Εξάμηνο 2002 Κ. Μουρλάς, Λέκτορας Σημείωση: Οι διαφάνειες αυτές βασίζονται κατά το μεγαλύτερο μέρος τους.
ΕΠΛ Θεωρία και Πρακτική Μεταγλωττιστών5-1 Επίλυσης ασάφειας με εισαγωγή μη-τερματικών Π.χ. stmt = “if”, expr, “then”, stmt | “if”, expr, “then”,
Κεφ.1 Εισαγωγη στην εννοια του Αλγοριθμου και στον Προγραμματισμο
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΘΠ06 - Μεταγλωττιστές Πίνακας Συμβόλων Φροντιστήριο - 30/04/2009.
Σημασιολογική ανάλυση Ι
Κεφάλαιο 6: Εισαγωγή στον προγραμματισμό Φυσικές και τεχνητές γλώσσες.
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 30/03/2009.
Ενότητα Α.4. Δομημένος Προγραμματισμός
ΘΠ06 - Μεταγλωττιστές Συντακτική Ανάλυση, Bison 1.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τρίτη, 31 Μαρτίου 2015Τμ. Πληροφορικής,
31 Μαρτίου 2015 ΔΙΑΦΑΝΕΙΑ 1 ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. – ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι Για τον προτασιακό.
ΕΠΛ 223 Θεωρία και Πρακτική Μεταγλωττιστών7-1 Πίνακας Συμβόλων Πίνακας συμβόλων: δομή δεδομένων που χρησιμοποιείται για την αποθήκευση διαφόρων πληροφοριών.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Π. ΚΑΤΣΑΡΟΣ Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τετάρτη, 1 Απριλίου 2015Τμ. Πληροφορικής,
Επικοινωνία Ανθρώπου Μηχανής HTML CGI JAVASCRIPT Κουμπούλης Χρήστος Α.Μ. 921 Χαλαβαζής Βασίλης Α.Μ. 988.
Διδακτική της Πληροφορικής ΗΥ302 Εργασία :Παρουσίαση σχολικού βιβλίου Γ’ Λυκείου Τεχνολογικής Κατεύθυνσης «Ανάπτυξη εφαρμογών σε προγραμματιστικό περιβάλλον»
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 3 Η Σημασιολογία των Γλωσσών Προγραμματισμού Προπτυχιακό.
Δηλαδή οι σημαντικοί δεν ασχολούνται με μικροπράγματα.
ΘΕΜΑΤΙΚΗ ΕΝΟΤΗΤΑ 2: ΘΕΜΑΤΑ ΘΕΩΡΗΤΙΚΗΣ ΕΠΙΣΤΗΜΗΣ Η/Υ
ΘΠ06 - Μεταγλωττιστές Εισαγωγή στον Bison Φροντιστήριο - 23/03/2010.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 9: Παραγωγή Ενδιάμεσου Κώδικα (Ενδιάμεσες Γλώσσες) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά.
Εθνικό και Καποδιστριακό Πανεπιστήμιο Αθηνών – Τμήμα Πληροφορικής και Τηλεπικοινωνιών 1 Κεφάλαιο 4 Σημασιολογία μιας Απλής Προστακτικής Γλώσσας Προπτυχιακό.
ΜΑΘΗΜΑ: ΜΕΤΑΓΛΩΤΤΙΣΤΕΣ ΔΙΔΑΣΚΟΝΤΕΣ: Κ. ΛΑΖΟΣ - Π. ΚΑΤΣΑΡΟΣ Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τρίτη, 14 Απριλίου 2015Τμ.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 13: Επαναληπτικό μάθημα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Το περιεχόμενο του μαθήματος διατίθεται.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 8: Πίνακας Συμβόλων Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας.
Κεφάλαιο 10 – Υποπρογράμματα
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 10: Παραγωγή Ενδιάμεσου Κώδικα (Σημασιολογικές ρουτίνες μετάφρασης-Μέρος Α) Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής.
Μεταγλωττιστές (Compilers) (Θ) Ενότητα 11: Βελτιστοποίηση Ενδιάμεσου Κώδικα Κατερίνα Γεωργούλη Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
1 Οργάνωση και Αρχιτεκτονική Υπολογιστών Πρόγραμμα Αναβάθμισης Προγράμματος Σπουδών Τμήματος Πληροφορικής Τ.Ε.Ι Θεσσαλονίκης Μάθημα Οργάνωση και Αρχιτεκτονική.
Βασικές συνιστώσες/εντολές ενός αλγορίθμου
Βασικά στοιχεία της Java
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Βασικές έννοιες προγραμματισμού Κεφάλαιο 7 ο. Βασικές έννοιες προγραμματισμού Αλφάβητο και τύποι δεδομένων Σταθερές και μεταβλητές Τελεστές, συναρτήσεις.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Συντακτική Ανάλυση με το Εργαλείο BISON Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Πληροφορική 2 Γλώσσες Προγραμματισμού 1. Γλώσσες προγραμματσιμού  Επιτρέπουν την κωδικοποίηση των αλγορίθμων  Η εκτέλεση ενός προγράμματος θα πρέπει.
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Δικτυωτή ανάλυση.
ΑΠΑΡΑΙΤΗΤΕΣ ΙΚΑΝΟΤΗΤΕΣ ΓΙΑ ΤΗ ΜΑΘΗΣΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
Η Γλώσσα Pascal Υποπρογράμματα
Πίνακας Συμβόλων Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής.
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον
Εντολές και δομές αλγορίθμου
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ Η/Υ
Β.ΕΠΑΛ-Γενικής Παιδείας  ΜΑΘΗΜΑ: Εισαγωγή στης αρχές Επιστήμης των Η/Υ  ΚΕΦΑΛΑΙΟ 4: Γλώσσες Αναπαράστασης Αλγορίθμων  ΕΝΟΤΗΤΑ 4.2: Δομή Ακολουθίας 
ΠΛΗΡΟΦΟΡΙΚΗ Γ΄ Γυμνασίου Α΄ Τρίμηνο
UNIT 1 Τα Πρώτα Προγράμματα.
Μεταγράφημα παρουσίασης:

Κεφάλαιο 4 :: Σημασιολογική Ανάλυση Πραγματολογία των Γλωσσών Προγραμματισμού Michael L. Scott Copyright © 2005 Elsevier

Ο Ρόλος της Σημασιολογικής Ανάλυσης Μετά τη συντακτική ανάλυση, οι επόμενες δύο φάσεις ενός «τυπικού» μεταγλωττιστή είναι η σημασιολογική ανάλυση η παραγωγή (ενδιάμεσου) κώδικα Η πρωταρχική δουλειά ενός σημασιολογικού αναλυτή είναι να επιβάλλει στατικούς σημασιολογικούς κανόνες (συνήθως στην αρχή) κατασκευάζει ένα δένδρο συντακτικής δομής η πληροφορία που συλλέγεται χρειάζεται στη γεννήτρια κώδικα Copyright © 2005 Elsevier

Ο Ρόλος της Σημασιολογικής Ανάλυσης Υπάρχει μια μεγάλη διαφοροποίηση ως προς το βαθμό που διαπλέκονται η συντακτική ανάλυση, η σημασιολογική ανάλυση και η παραγωγή ενδιάμεσου κώδικα Μια συνηθισμένη προσέγγιση συνδυάζει την κατασκευή του δένδρου συντακτικής δομής με τη συντακτική ανάλυση (χωρίς ρητό δένδρο συντακτικής δομής), και ακολουθούν ξεχωριστές φάσεις για τη σημασιολογική ανάλυση και την παραγωγή κώδικα Copyright © 2005 Elsevier

Ο Ρόλος της Σημασιολογικής Ανάλυσης Ο μεταγλωττιστής της PL/0 δεν έχει καμία βελτιστοποίηση (υπάρχει μόνο μια πολύ μικρή και τετριμμένη φάση που λειτουργεί στο δένδρο συντακτικής δομής) Η γεννήτρια κώδικα παράγει συμβολική γλώσσα για MIPS, όχι μια ενδιάμεση μορφή που να είναι ανεξάρτητη από τη μηχανή Copyright © 2005 Elsevier

Γραμματικές Χαρακτηριστικών Τόσο η σημασιολογική ανάλυση όσο και η παραγωγή του (ενδιάμεσου) κώδικα μπορούν να περιγραφούν ως διαδικασίες σχολιασμού ή «διακόσμησης» ενός δένδρου συντακτικής ανάλυσης ή συντακτικού δένδρου Οι ΓΡΑΜΜΑΤΙΚΕΣ ΧΑΡΑΚΤΗΡΙΣΤΙΚΩΝ παρέχουν ένα τυπικό πλαίσιο για τη διακόσμηση ενός δένδρου Οι παρακάτω σημειώσεις αναφέρονται στις γραμματικές χαρακτηριστικών και στις αυτοσχέδιες και συγγενικές τους ΡΟΥΤΙΝΕΣ ΕΝΕΡΓΕΙΩΝ Copyright © 2005 Elsevier

Γραμματικές Χαρακτηριστικών Θα αρχίσουμε με τη διακόσμηση των δένδρων συντακτικής ανάλυσης και στη συνέχεια θα ασχοληθούμε με τα συντακτικά δένδρα Θεωρήστε την εξής LR (ανοδική) γραμματική για αριθμητικές εκφράσεις που αποτελούνται από σταθερές, με κανόνες προτεραιότητας και προσεταιριστικότητας: Copyright © 2005 Elsevier

Γραμματικές Χαρακτηριστικών E  E + T E  E – T E  T T  T * F T  T / F T  F F  - F F  (E) F  const Τα παραπάνω δε λένε τίποτα για τη ΣΗΜΑΣΙΑ του προγράμματος Copyright © 2005 Elsevier

Γραμματικές Χαρακτηριστικών Μπορούμε να τη μετατρέψουμε σε μια γραμματική χαρακτηριστικών με τον τρόπο που ακολουθεί (όπως στην Εικόνα 4.1): E  E + T  E1.val = E2.val + T.val E  E – T  E1.val = E2.val - T.val E  T  E.val = T.val T  T * F  T1.val = T2.val * F.val T  T / F  T1.val = T2.val / F.val T  F  T.val = F.val F  - F  F1.val = - F2.val F  (E)  F.val = E.val F  const  F.val = C.val Copyright © 2005 Elsevier

Γραμματικές Χαρακτηριστικών Σκοπός της γραμματικής χαρακτηριστικών είναι να ορίσει τη σημασιολογία του προγράμματος εισόδου Οι κανόνες χαρακτηριστικών πρέπει να θεωρούνται ορισμοί, όχι απόδοση τιμών Δεν είναι υποχρεωτικό να αποτιμηθούν κάποια συγκεκριμένη χρονική στιγμή ή με κάποια συγκεκριμένη σειρά, αν και ορίζουν το αριστερό μέλος τους σε σχέση με το δεξιό μέλος Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών Η διαδικασία του υπολογισμού χαρακτηριστικών ονομάζεται σχολιασμός ή ΔΙΑΚΟΣΜΗΣΗ του δένδρου συντακτικής ανάλυσης [βλ. Εικόνα 4.2 για το (1+3)*2] Αφού ολοκληρωθεί η διακόσμηση, η τιμή της έκφρασης βρίσκεται στο χαρακτηριστικό val της ρίζας του δένδρου Τα τμήματα κώδικα των κανόνων ονομάζονται ΣΗΜΑΣΙΟΛΟΓΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Πιο αυστηρά, θα έπρεπε να θεωρούνται συναρτήσεις, π.χ., E1.val = sum (E2.val, T.val), βλ. Εικόνα 4.1 Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών Εικόνα 4.2 Διακόσμηση δένδρου συντακτικής ανάλυσης για την έκφραση (1 + 3) * 2. Τα χαρακτηριστικά val των συμβόλων φαίνονται ως ορθογώνια. Τα καμπύλα βέλη αντιπροσωπεύουν τη ροή των χαρακτηριστικών, που στην περίπτωση αυτή είναι πάντα ανοδική. Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών Εικόνα 4.2 Διακόσμηση δένδρου συντακτικής ανάλυσης για την έκφραση (1 + 3) * 2. Τα χαρακτηριστικά val των συμβόλων φαίνονται ως ορθογώνια. Τα καμπύλα βέλη αντιπροσωπεύουν τη ροή των χαρακτηριστικών, που στην περίπτωση αυτή είναι πάντα ανοδική. Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών Αυτή είναι μια πολύ απλή γραμματική χαρακτηριστικών: Κάθε σύμβολο έχει το πολύ ένα χαρακτηριστικό τα σύμβολα στίξης δεν έχουν χαρακτηριστικά Αυτά τα χαρακτηριστικά ονομάζονται ΣΥΝΘΕΤΙΚΑ: Υπολογίζονται μόνο από χαρακτηριστικά πραγμάτων που είναι πιο κάτω από αυτά στο δένδρο συντακτικής ανάλυσης Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών Γενικά, επιτρέπονται τα συνθετικά και τα ΚΛΗΡΟΝΟΜΗΜΕΝΑ χαρακτηριστικά: Τα κληρονομημένα χαρακτηριστικά μπορεί να εξαρτώνται από πληροφορίες «από επάνω» ή «από το πλάι» στο δένδρο συντακτικής ανάλυσης Οι λεκτικές μονάδες έχουν μόνο συνθετικά χαρακτηριστικά, που έχουν αρχικοποιηθεί από το λεκτικό αναλυτή (όνομα αναγνωριστικού, τιμή σταθεράς, κλπ.). Τα κληρονομημένα χαρακτηριστικά του αρχικού συμβόλου αποτελούν παραμέτρους του χρόνου εκτέλεσης του μεταγλωττιστή Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών Η παραπάνω γραμματική ονομάζεται συνθετική (S-ATTRIBUTED) γιατί χρησιμοποιεί μόνο συνθετικά χαρακτηριστικά Η ΡΟΗ ΧΑΡΑΚΤΗΡΙΣΤΙΚΩΝ (γράφος εξαρτήσεων των χαρακτηριστικών) είναι αμιγώς ανοδική Είναι SLR(1), αλλά όχι LL(1) Μια ισοδύναμη LL(1) γραμματική απαιτεί κληρονομημένα χαρακτηριστικά: Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών – Παράδειγμα Γραμματική χαρακτηριστικών στην Εικόνα 4.3: E  T TT  E.v = TT.v  TT.st = T.v TT1  + T TT2  TT1.v = TT2.v  TT2.st = TT1.st + T.v TT1  - T TT1  TT1.v = TT2.v  TT2.st = TT1.st - T.v TT    TT.v = TT.st T  F FT  T.v = FT.v  FT.st = F.v Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών – Παράδειγμα Γραμματική χαρακτηριστικών στην Εικόνα 4.3 (συνέχεια): FT1  * F FT2  FT1.v = FT2.v  FT2.st = FT1.st * F.v FT1  / F FT2  FT1.v = FT2.v  FT2.st = FT1.st / F.v FT    FT.v = FT.st F1  - F2  F1.v = - F2.v F  ( E )  F.v = E.v F  const  F.v = C.v Εικόνα 4.4 – δένδρο συντακτικής ανάλυσης για το (1+3)*2 Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών – Παράδειγμα Εικόνα 4.4 Διακόσμηση του δένδρου καθοδικής συντακτικής ανάλυσης για την έκφραση (1 + 3) * 2, με τη γραμματική χαρακτηριστικών της Εικόνας 4.3. Τα καμπύλα βέλη αναπαριστούν και πάλι τη ροή χαρακτηριστικών, που δεν είναι πια ανοδική αλλά εξακολουθεί να είναι από αριστερά προς τα δεξιά. Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών – Παράδειγμα Γραμματική χαρακτηριστικών στην Εικόνα 4.3: Αυτή η γραμματική χαρακτηριστικών είναι πιο πολύπλοκη από την πρώτη αλλά είναι ακόμα αριστερή (L-ATTRIBUTED), που σημαίνει ότι τα χαρακτηριστικά μπορούν να υπολογιστούν με μια απλή διάσχιση της εισόδου από αριστερά προς τα δεξιά Μπορούν να υπολογιστούν κατά τη συντακτική ανάλυση LL Κάθε συνθετικό χαρακτηριστικό ενός συμβόλου στο αριστερό μέλος εξαρτάται μόνο από χαρακτηριστικά συμβόλων του δεξιού μέλους Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών – Παράδειγμα Γραμματική χαρακτηριστικών στην Εικόνα 4.3: Κάθε κληρονομημένο χαρακτηριστικό ενός συμβόλου στο δεξιό μέλος (ορισμός L-attributed) εξαρτάται μόνο από κληρονομημένα χαρακτηριστικά του συμβόλου στο αριστερό μέλος, ή συνθετικά ή κληρονομημένα χαρακτηριστικά των συμβόλων που βρίσκονται στα αριστερά του, στο δεξιό μέλος Οι συνθετικές γραμματικές είναι η πιο γενική κατηγορία γραμματικών χαρακτηριστικών για τις οποίες ο υπολογισμός μπορεί να γίνει επιτόπου κατά τη συντακτική ανάλυση LL Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών Υπάρχουν ορισμένες εργασίες, όπως η παραγωγή κώδικα για «βραχυκυκλωμένες» λογικές εκφράσεις, τις οποίες διεκπεραιώνουμε καλύτερα με μια μη αριστερή μέθοδο μετάφρασης Όμως, λόγω του πιθανού κόστους των πολύπλοκων τρόπων διάσχισης, οι περισσότεροι μεταγλωττιστές επιμένουν σε μια αριστερή γραμματική Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών – Συντακτικά Δένδρα Εικόνα 4.5 Ανοδική γραμματική χαρακτηριστικών για την κατασκευή συντακτικού δένδρου. Το σύμβολο +/- χρησιμοποιείται (όπως στις αριθμομηχανές) για την αντιστροφή του προσήμου. Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών – Συντακτικά Δένδρα Εικόνα 4.6 Καθοδική γραμματική χαρακτηριστικών για την κατασκευή συντακτικού δένδρου. Εδώ το χαρακτηριστικό st, όπως το χαρακτηριστικό ptr (και αντίθετα με το χαρακτηριστικό st της Εικόνας 4.3), είναι δείκτης προς έναν κόμβο του συντακτικού δένδρου. Copyright © 2005 Elsevier

Υπολογισμός Χαρακτηριστικών – Συντακτικά Δένδρα Εικόνα 4.7 Κατασκευή του συντακτικού δένδρου με διακόσμηση ενός δένδρου ανοδικής συντακτικής ανάλυσης, με τη γραμματική της Εικόνας 4.5. Στο διάγραμμα (α) οι τιμές των σταθερών 1 και 3 έχουν τοποθετηθεί σε νέα φύλλα του συντακτικού δένδρου. Δείκτες προς αυτά τα φύλλα διαδίδονται προς τα πάνω στα χαρακτηριστικά τωνE και T. Στο (β), οι δείκτες προς αυτά τα φύλλα γίνονται δείκτες-παιδιά ενός νέου εσωτερικού κόμβου +. Στο (γ), ο δείκτης προς αυτόν τον κόμβο διαδίδεται προς τα επάνω στα χαρακτηριστικά του T, και δημιουργείται ένα νέο φύλλο για το 2. Τέλος, στο (δ) οι δείκτες από τα T και F γίνονται δείκτες-παιδιά ενός νέου εσωτερικού κόμβου x, και ένας δείκτης προς αυτόν τον κόμβο διαδίδεται προς τα πάνω στα χαρακτηριστικά του E. Εικόνα 4.8 Κατασκευή συντακτικού δένδρου με διακόσμηση του δένδρου καθοδικής συντακτικής ανάλυσης, με τη γραμματική της Εικόνας 4.6. Στο επάνω διάγραμμα, (α), η τιμή της σταθεράς 1 έχει τοποθετηθεί σε ένα νέο φύλλο του συντακτικού δένδρου. Ένας δείκτης προς αυτό το φύλλο διαδίδεται στη συνέχεια στο χαρακτηριστικό st του TT. Στο (β), έχει δημιουργηθεί ένα δεύτερο φύλλο για τη σταθερά 3. Οι δείκτες προς αυτά τα δύο φύλλα γίνονται μετά δείκτες-παιδιά ενός νέου εσωτερικού κόμβου +, ένας δείκτης στον οποίο διαδίδεται από το χαρακτηριστικό st του κατώτατου TT, όπου δημιουργήθηκε, προς τα επάνω και μέχρι το χαρακτηριστικό st του κορυφαίου FT. Στο (β), ένα τρίτο φύλλο έχει δημιουργηθεί για τη σταθερά 2. Δείκτες προς αυτό το φύλλο και προς τον κόμβο + έχουν γίνει τα παιδιά ενός νέου κόμβου x, ένας δείκτης προς τον οποίο διαδίδεται από το st του κατώτατου FT, όπου δημιουργήθηκε, μέχρι τη ρίζα του δένδρου. Copyright © 2005 Elsevier

Ρουτίνες Ενεργειών Μπορούμε να συνδέσουμε αυτήν τη συζήτηση με το προηγούμενο θέμα των ξεχωριστών φάσεων και της επιτόπου σημασιολογικής ανάλυσης και/ή παραγωγής κώδικα Αν η σημασιολογική ανάλυση και/ή η παραγωγή του κώδικα διαπλέκονται με τη συντακτική ανάλυση, τότε η ΜΕΘΟΔΟΣ ΜΕΤΑΦΡΑΣΗΣ που χρησιμοποιούμε για να υπολογίσουμε τα χαρακτηριστικά πρέπει να είναι αριστερή Copyright © 2005 Elsevier

Ρουτίνες Ενεργειών Αν σπάσουμε τη σημασιολογική ανάλυση και την παραγωγή κώδικα σε ξεχωριστές φάσεις, τότε ο κώδικας που κατασκευάζει το συντακτικό δένδρο ή το δένδρο συντακτικής ανάλυσης πρέπει να χρησιμοποιεί μέθοδο μετάφρασης από τα αριστερά προς τα δεξιά Όμως, οι επόμενες φάσεις μπορούν να χρησιμοποιήσουν μια πιο περίπλοκη μέθοδο μετάφρασης αν αυτό είναι επιθυμητό Copyright © 2005 Elsevier

Ρουτίνες Ενεργειών Υπάρχουν αυτόματα εργαλεία που κατασκευάζουν μεθόδους μετάφρασης για γραμματικές ελεύθερες από συμφραζόμενα ή δενδρικές γραμματικές (που περιγράφουν την πιθανή δομή ενός συντακτικού δένδρου) Αυτά τα εργαλεία είναι δημοφιλή στους διορθωτές κειμένου που βασίζονται στη σύνταξη και στους αυξητικούς μεταγλωττιστές Οι περισσότεροι συνηθισμένοι μεταγλωττιστές όμως, χρησιμοποιούν αυτοσχέδιες τεχνικές Copyright © 2005 Elsevier

Ρουτίνες Ενεργειών Μια αυτοσχέδια μέθοδος μετάφρασης που επικαλύπτεται με τη συντακτική ανάλυση παίρνει τη μορφή ενός συνόλου από ΡΟΥΤΙΝΕΣ ΕΝΕΡΓΕΙΩΝ: Μια ρουτίνα ενεργειών είναι μια σημασιολογική συνάρτηση που ο προγραμματιστής ορίζει στο μεταγλωττιστή να εκτελεί σε κάποιο συγκεκριμένο σημείο της συντακτικής ανάλυσης Αν η σημασιολογική ανάλυση επικαλύπτεται με την παραγωγή κώδικα, τότε οι ρουτίνες ενεργειών μπορούν να χρησιμοποιηθούν για να εκτελούν σημασιολογικούς ελέγχους ή να παράγουν κώδικα Copyright © 2005 Elsevier

Ρουτίνες Ενεργειών Αν η σημασιολογική ανάλυση και η παραγωγή κώδικα διαχωριστούν σε ξεχωριστές φάσεις, τότε οι ρουτίνες ενεργειών μπορούν να χρησιμοποιηθούν για να κατασκευαστεί ένα συντακτικό δένδρο Ένα δένδρο συντακτικής ανάλυσης μπορεί να κατασκευαστεί εντελώς αυτόματα Δε χρειαζόμαστε ρουτίνες ενεργειών για αυτόν το σκοπό Copyright © 2005 Elsevier

Ρουτίνες Ενεργειών Μεταγενέστερες φάσεις της μεταγλώττισης μπορούν να αποτελούνται από αυτοσχέδιες διασχίσεις δένδρων ή μπορούν να χρησιμοποιούν ένα αυτόματο εργαλείο για την παραγωγή μιας μεθόδου μετάφρασης Ο μεταγλωττιστής της PL/0 χρησιμοποιεί αυτοσχέδιες διασχίσεις που είναι σχεδόν (αλλά όχι εντελώς) από αριστερά προς τα δεξιά Για τη LL(1) γραμματική χαρακτηριστικών μας, θα μπορούσαμε να βάλουμε ρητές ρουτίνες ενεργειών ως εξής: Copyright © 2005 Elsevier

Ρουτίνες Ενεργειών - Παράδειγμα Ρουτίνες Ενεργειών (Εικόνα 4.9) Εικόνα 4.9 Γραμματική LL(1) με ρουτίνες ενεργειών για την κατασκευή συντακτικού δένδρου. Copyright © 2005 Elsevier

Διαχείριση Χώρου για τα Χαρακτηριστικά Οι εγγραφές στη στοίβα των χαρακτηριστικών τοποθετούνται και αφαιρούνται αυτόματα Εικόνα 4.10 Γραμματική χωρίς συμφραζόμενα για τη γλώσσα της αριθμομηχανής με τύπους και δηλώσεις. Στόχος είναι κάθε αναγνωριστικό να δηλώνεται πριν από τη χρήση του, και να μην αναμιγνύονται οι τύποι στους υπολογισμούς. Copyright © 2005 Elsevier

Διακόσμηση του Συντακτικού Δένδρου Συντακτικό δένδρο για ένα απλό πρόγραμμα που τυπώνει το μέσο όρο ενός ακεραίου και ενός πραγματικού Εικόνα 4.11 Συντακτικό δένδρο για ένα απλό πρόγραμμα αριθμομηχανής. Copyright © 2005 Elsevier

Διακόσμηση του Συντακτικού Δένδρου Δενδρική γραμματική που απεικονίζει τη δομή του συντακτικού δένδρου στην Εικόνα 4.11 Copyright © 2005 Elsevier

Διακόσμηση του Συντακτικού Δένδρου Απόσπασμα από μια πλήρη δενδρική γραμματική που απεικονίζει τη δομή του συντακτικού δένδρου στην Εικόνα 4.11 Copyright © 2005 Elsevier