TP9 - Question 2.3

Programmation Avancée

Modérateur : Douin

bcalendreau
Messages : 38
Inscription : 07 oct. 2017 20:27

TP9 - Question 2.3

Message par bcalendreau » 16 janv. 2018 23:41

Bonjour à tous,

J'ai une erreur aux soumissions des tests Jnews et je n'arrive à voir pourquoi.
La source du test est la suivante :

try{

SerialiseDeserialiseAST_XML.serialAst2xml(new AST_Fact(10),nomDuFichier);
Element astXML=SerialiseDeserialiseAST_XML.deserialXml(nomDuFichier);

Contexte m = new Memoire();
Instruction inst=XML2AST.xmlInst2ast(m,astXML);

m.ecrire("n",5);
VisiteurExpression<Integer> ve = new VisiteurEvaluation(m);
VisiteurExpressionBooleenne<Boolean> vb = new VisiteurBoolEvaluation(ve);
VisiteurInstruction<Contexte> vi = new VisiteurInstEvaluation(ve,vb);

VisiteurExpression<String> ves = new VisiteurInfixe(m);
VisiteurExpressionBooleenne<String> vbs = new VisiteurBoolToString(ves);
VisiteurInstruction<String> vs = new VisiteurInstToString(ves,vbs);
inst.accepter(vi);

assertTrue(inst.accepter(vs) + " ne donne pas le résultat attendu ...", m.lire("fact")== fact(5));


Or, cela ne devrait-il pas être new AST_FACT(5) à la première ligne ?
J'ai l'impression qu'il y a une erreur dans le test, mais comme à chaque fois que j'ai cette impression c'est en fait moi qui me trompe, je me demande ce que j'ai loupé.

Toute aide est la bienvenue !

Merci beaucoup

slash
Messages : 52
Inscription : 04 nov. 2017 2:45

Re: TP9 - Question 2.3

Message par slash » 17 janv. 2018 1:09

Bonsoir,

Tu as la eu la bonne intuition je pense, il y a quelque chose qui ne va pas.
Vérifies bien comment est interprété le paramètre "n". Le constructeur inscrit sa valeur en mémoire, mais est-ce que ton AST la récupère bien ?
Pour cela il faudrait que tu créés une instance de Variable appelée "n", et que tu l'utilises en tant que telle dans l'affectation de l'AST.

En résumé, si tu veux affecter la valeur de "n" donné en paramètre, dans une variable x, tu dois déclarer ces deux variables au préalable :
private Variable n = new Variable(m,"n");
private Variable x = new Variable(m,"x");

Le constructeur se chargeant d'inscrire la valeur dans "n", il suffit d'écrire l'affectation :
new Affectation(x,n);

bcalendreau
Messages : 38
Inscription : 07 oct. 2017 20:27

Re: TP9 - Question 2.3

Message par bcalendreau » 17 janv. 2018 1:49

Merci pour ta réponse rapide !
Il y avait bien un problème avec la récupération de la variable.

Malgré tout, ça me semble pas exactement clair la façon dont est testée l'AST.

Avant de modifier mon AST_FACT, le test passait si j'utilisais la même valeur pour AST_FACT.
Si je comprends bien, peu importe la valeur renseignée dans le XML puisque on réécrit une nouvelle valeur dans la variable n après avoir récupéré l'instruction ? C'est étrange.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité