Εκφώνηση της ερώτησης 4 ΘΕΜΑ 4 Ερώτηση 1 Να προσδιορίσετε τις σηµασιολογικές ενέργειες υπολογισµού - εκτύπωσης της τιµής αριθµητικών εκφράσεων, που δίνονται µε συντακτικά κατευθυνόµενη καθοδική µετάφραση προτάσεων της γραµµατικής: SÆΕ Ε Æ Τ Τ΄ Τ΄ Æ + Τ Τ΄ | - Τ Τ΄ | ε Τ Æ F F΄ F΄ Æ * F F΄ | / F F΄ | ε F Æ ( E ) | NUM ΥΠΟ∆ΕΙΞΗ: Προτείνεται η διατύπωση µεταφραστικού σχήµατος recursive descent µε τις κληρονοµήσιµες ιδιότητες Τ΄.↓val, F΄.↓val (το ↓ υποδηλώνει κληρονοµήσιµη ιδιότητα), τις συνθέσιµες ιδιότητες Ε.↑val, Τ.↑val, F.↑val, Τ΄.↑val, F΄.↑val και την ιδιότητα NUM.val (το ↑ υποδηλώνει συνθέσιµη ιδιότητα). Ερώτηση 2 Να σχεδιάσετε το δένδρο ανίχνευσης που αντιστοιχεί στην ανάλυση της έκφρασης 17 + (5 - 2) και να καταγράψετε πάνω σε αυτό τους υπολογισµούς των σηµασιολογικών ιδιοτήτων του µεταφραστικού σχήµατος.
Απάντηση Ερώτηση 1 Κανόνας S Æ Ε Ε Æ Τ Τ΄
Τ΄ Æ + Τ Τ1΄ Τ΄ Æ - Τ Τ1΄ Τ΄ Æ ε Τ Æ F F΄ F΄ Æ * F F1΄ F΄ Æ / F F1΄ F΄ Æ ε F Æ (E) F Æ NUM
Σηµασιολογική ∆ράση
{Τ΄.↓val = Τ.↑val} {Ε.↑val = Τ΄.↑val} {Τ1΄.↓val = Τ΄.↓val} {Τ΄.↑val = Τ1΄.↑val + Τ.↑val} {Τ1΄.↓val = Τ΄.↓val} {Τ΄.↑val = Τ1΄.↑val - Τ.↑val} {Τ΄.↑val = Τ΄.↓val} {F΄.↓val = F.↑val} {T.↑val = F΄.↑val} {F1΄.↓val = F΄.↓val} {F΄.↑val = F1΄.↑val * F.↑val } {F1΄.↓val = F΄.↓val} {F΄.↑val = F1΄.↑val / F.↑val } {F΄.↑val = F΄.↓val} {F.↑val = Ε.↑val} {F.↑val = NUM.val}
Ερώτηση 2
E
T
T’
+ F
T
T’
F’
F NUM
F’
ε
ε
(
E
)
ε
T
T’
F
F’
NUM
ε
-
T
T’
F
F’
NUM
ε
ε
Επειδή η ανάπτυξη του δέντρου είναι αρκετά µεγάλη, αναπτύσσω τους υπολογισµούς των σηµασιολογικών ιδιοτήτων του µεταφραστικού σχήµατος στον παρακάτω πίνακα. Κανόνας F Æ NUM T Æ F F’ F’ Æ ε T Æ F F’ E Æ T T’ T’ Æ + T T1’ T’ Æ ε
∆ράση F.↑val = NUM.val F΄.↓val = F.↑val F΄.↑val = F΄.↓val T.↑val = F΄.↑val Τ΄.↓val = Τ.↑val Τ1΄.↓val = Τ΄.↓val Τ΄.↑val = Τ΄.↓val
Αποτέλεσµα F.↑val = 17 F΄.↓val = 17 F΄.↑val = 17 T.↑val = 17 Τ΄.↓val = 17 Τ1΄.↓val = 17 Τ΄.↑val = 17
F Æ NUM T Æ F F’ F’ Æ ε T Æ F F’ E Æ T T’ T’ Æ - T T1’ T’ Æ ε
F.↑val = NUM.val F΄.↓val = F.↑val F΄.↑val = F΄.↓val T.↑val = F΄.↑val Τ΄.↓val = Τ.↑val Τ1΄.↓val = Τ΄.↓val Τ΄.↑val = Τ΄.↓val
F.↑val = 5 F΄.↓val = 5 F΄.↑val = 5 T.↑val = 5 Τ΄.↓val = 5 Τ1΄.↓val = 5 Τ΄.↑val = 5
F Æ NUM T Æ F F’ F’ Æ ε T Æ F F’ T’ Æ - T T1’
F.↑val = NUM.val F΄.↓val = F.↑val F΄.↑val = F΄.↓val T.↑val = F΄.↑val Τ΄.↑val = Τ1΄.↑val - Τ.↑val
F.↑val = 2 F΄.↓val = 2 F΄.↑val = 2 T.↑val = 2 Τ΄.↑val = 5 – 2 = 3
E Æ T T’ FÆ(E) T Æ F F’ F’ Æ ε T Æ F F’
Ε.↑val = Τ΄.↑val F.↑val = Ε.↑val F΄.↓val = F.↑val F΄.↑val = F΄.↓val T.↑val = F΄.↑val
Ε.↑val = 3 F.↑val = 3 F΄.↓val = 3 F΄.↑val = 3 T.↑val = 3
T’ Æ + T T1’ E Æ T T’
Τ΄.↑val = Τ1΄.↑val + Τ.↑val Ε.↑val = Τ΄.↑val
Τ΄.↑val = 17 + 3 = 20 Ε.↑val = 20