You are on page 1of 3

Εκφώνηση της ερώτησης 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 Æ Ε
Ε Æ Τ Τ΄ {Τ΄.↓val = Τ.↑val}
{Ε.↑val = Τ΄.↑val}
Τ΄ Æ + Τ Τ1΄ {Τ1΄.↓val = Τ΄.↓val}
{Τ΄.↑val = Τ1΄.↑val + Τ.↑val}
Τ΄ Æ - Τ Τ1΄ {Τ1΄.↓val = Τ΄.↓val}
{Τ΄.↑val = Τ1΄.↑val - Τ.↑val}
Τ΄ Æ ε {Τ΄.↑val = Τ΄.↓val}
Τ Æ F F΄ {F΄.↓val = F.↑val}
{T.↑val = F΄.↑val}
F΄ Æ * F F1΄ {F1΄.↓val = F΄.↓val}
{F΄.↑val = F1΄.↑val * F.↑val }
F΄ Æ / F F1΄ {F1΄.↓val = F΄.↓val}
{F΄.↑val = F1΄.↑val / F.↑val }
F΄ Æ ε {F΄.↑val = F΄.↓val}
F Æ (E) {F.↑val = Ε.↑val}
F Æ NUM {F.↑val = NUM.val}
Ερώτηση 2

T T’

+ T T’
F F’

F F’ ε
NUM ε

( E ) ε

T T’

- T T’
F F’

F F’ ε
NUM ε

NUM ε

Επειδή η ανάπτυξη του δέντρου είναι αρκετά µεγάλη, αναπτύσσω τους υπολογισµούς των
σηµασιολογικών ιδιοτήτων του µεταφραστικού σχήµατος στον παρακάτω πίνακα.

Κανόνας ∆ράση Αποτέλεσµα


F Æ NUM F.↑val = NUM.val F.↑val = 17
T Æ F F’ F΄.↓val = F.↑val F΄.↓val = 17
F’ Æ ε F΄.↑val = F΄.↓val F΄.↑val = 17
T Æ F F’ T.↑val = F΄.↑val T.↑val = 17
E Æ T T’ Τ΄.↓val = Τ.↑val Τ΄.↓val = 17
T’ Æ + T T1’ Τ1΄.↓val = Τ΄.↓val Τ1΄.↓val = 17
T’ Æ ε Τ΄.↑val = Τ΄.↓val Τ΄.↑val = 17
F Æ NUM F.↑val = NUM.val F.↑val = 5
T Æ F F’ F΄.↓val = F.↑val F΄.↓val = 5
F’ Æ ε F΄.↑val = F΄.↓val F΄.↑val = 5
T Æ F F’ T.↑val = F΄.↑val T.↑val = 5
E Æ T T’ Τ΄.↓val = Τ.↑val Τ΄.↓val = 5
T’ Æ - T T1’ Τ1΄.↓val = Τ΄.↓val Τ1΄.↓val = 5
T’ Æ ε Τ΄.↑val = Τ΄.↓val Τ΄.↑val = 5

F Æ NUM F.↑val = NUM.val F.↑val = 2


T Æ F F’ F΄.↓val = F.↑val F΄.↓val = 2
F’ Æ ε F΄.↑val = F΄.↓val F΄.↑val = 2
T Æ F F’ T.↑val = F΄.↑val T.↑val = 2
T’ Æ - T T1’ Τ΄.↑val = Τ1΄.↑val - Τ.↑val Τ΄.↑val = 5 – 2 = 3

E Æ T T’ Ε.↑val = Τ΄.↑val Ε.↑val = 3


FÆ(E) F.↑val = Ε.↑val F.↑val = 3
T Æ F F’ F΄.↓val = F.↑val F΄.↓val = 3
F’ Æ ε F΄.↑val = F΄.↓val F΄.↑val = 3
T Æ F F’ T.↑val = F΄.↑val T.↑val = 3

T’ Æ + T T1’ Τ΄.↑val = Τ1΄.↑val + Τ.↑val Τ΄.↑val = 17 + 3 = 20


E Æ T T’ Ε.↑val = Τ΄.↑val Ε.↑val = 20