Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

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

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Κεφάλαιο 4 :: Σημασιολογική Ανάλυση"— Μεταγράφημα παρουσίασης:

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

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

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

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

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

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

7 Γραμματικές Χαρακτηριστικών
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

8 Γραμματικές Χαρακτηριστικών
Μπορούμε να τη μετατρέψουμε σε μια γραμματική χαρακτηριστικών με τον τρόπο που ακολουθεί (όπως στην Εικόνα 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

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

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

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

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

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

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

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

16 Υπολογισμός Χαρακτηριστικών – Παράδειγμα
Γραμματική χαρακτηριστικών στην Εικόνα 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

17 Υπολογισμός Χαρακτηριστικών – Παράδειγμα
Γραμματική χαρακτηριστικών στην Εικόνα 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

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

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

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

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

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

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

24 Υπολογισμός Χαρακτηριστικών – Συντακτικά Δένδρα
Εικόνα 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

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

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

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

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

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

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

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

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

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

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

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


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

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google