bonjour,
ma femme possède une mobylette ancienne qui n'a pas de graissage séparé. On doit mettre dans le réservoir du mélange huile et essence
"1 litre de mélange à 4%" signifie qu'il y a dans ce mélange 0,96 litre d'essence et 0,04 litre d'huile.
je pourrais écrire un petit programme qui demande la quantité de mélange et le pourcentage, et calcule les quantités d'huile et d'essence. Mais je voudrais faire un peu plus compliqué (pour le fun).
mon programme reçois une phrase du genre "M4P3", qui signifie "4 l de mélange à 3%", et calcule les quantités d'huile et d'essence. il analyse M4P3 à l'aide d'un analyseur syntaxique
j'ai déjà fait l'analyse lexicale et l'analyse syntaxique, qui fonctionnent
sachant que j'utilise la formule huile=mélange x (1-pourcentage/100) et essence = mélange - huile
voici la dds, qui se veut L-attribuée car elle utilise un attribut hérité huile.h calculé avec un attribut à sa gauche (la dds qui construit l'arbre est indiqué plus loin):
les terminaux de cette grammaire sont {M;P;NB}. Les autres symboles sont les non-terminaux
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 essence -> mélange huile | essence.s := mélange.s - huile.s | huile.h := mélange.s huile -> pourcentage | huile.s := huile.h x ( 1 - pourcentage.s / 100 ) melange -> M NB | melange.s := nb.val pourcentage -> P NB | pourcentage.s := nb.val
ma question est: la dds ci-dessous est-elle correcte?(E=essence,m=mélange,H=huile,p=pourcentage,H.s:attribut synthétisé H, H.h=attribut hérité H)
quelqu'un a une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 E -> m H | E.nud := Nud( '-', m.nud , H.s ) | H.h := m.nud H -> p | H.s := Nud( 'x', H.h, Nud( '-' , Feuille(NB,1) , Nud( '/' , p.nud , Feuille(NB,100) ) ) ) m -> M NB | m.nud := Feuille(NB,NB.val) p -> P NB | p.nud := Feuille( NB, NB.val)
Partager