[Compilation] Définition dirigée par la syntaxe - exercice du purple dragon book
bonjour,
je ne sais pas si je suis dans le bon forum pour parler de ça.
Il s'agit d'un exercice du livre "compilateurs principes techniques et outils".
À savoir, ils nous donnent cette grammaire:
Code:
1 2 3
| S -> L , L | L
L -> L B | B
B -> 0 | 1 |
Ils nous demandent d'écrire une définition dirigée par la syntaxe L-attribuée qui calcule la valeur d'un nombre binaire décrit par cette grammaire.
Je ne suis pas à l'école, je me tourne vers vous pour me corriger cet exercice.
ma réponse:
d'abord, pour une dds L-attribuée, il faut modifier cette grammaire pour la rendre LL. ce qui donne:
Code:
1 2 3
| S -> L , L | L
L -> B R
R -> B R | epsilon (production vide) |
alors voici les résultats de mon travail:
L.côté et R.côté sont des attributs hérités
les autres attributs sont synthétisés.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| S -> L1 , L2
règles sémantiques:
S.val = L1.val + L2.val
L1.côté = 1
L2.côté = 0,5
S -> L
règles sémantiques:
S.val = L.val
L.côté = 1
L -> B R
règles sémantiques:
L.val = R.val
R.côté = L.côté
R -> B R<sub>1</sub>
règles sémantiques:
R.val = ( R<sub>1</sub>.val + B.val x R<sub>1</sub>.poids ) x R.côté
R<sub>1</sub>.côté = R.côté
R.poids = R<sub>1</sub>.poids x 2
R -> epsilon
règles sémantiques:
R.val = 0
R.poids=1 |
quelqu'un a une idée?