TP6 question3-1

Programmation Avancée

Modérateur : Douin

GANKAMA
Messages : 34
Inscription : 26 oct. 2017 16:51

TP6 question3-1

Message par GANKAMA » 27 nov. 2017 20:18

Bonsoir,

J'ai encore des soucis de compréhension(plutôt d'interprétation) des règles d'inférence .Concernant par exemple le nœud affectation est ce possible de l'interprété comme ceci:

public Contexte visite(Affectation a){
// à compléter
a.exp().accepter(this.vi);

return this.vi.contexte(); // contexte modifié;
}


Cordialement

manuel.lb
Messages : 24
Inscription : 29 oct. 2017 16:59

Re: TP6 question3-1

Message par manuel.lb » 27 nov. 2017 21:01

Bonsoir,
Il y a 3 classes à compléter : VisiteurInstToString, VisiteurInstEvaluation, VisiteurInstToJava.
Pour trouver de laquelle il s'agit, j'ai regardé les 3 sources ; je pense que tu es dans VisiteurInstEvaluation.

Comme on est en évaluation, il faut concrètement (réellement) modifier l'état de la mémoire ; on est ici (selon ma compréhension) dans la fonction qui doit se charger de ça car : c'est la spécificité de l'Evaluation que de modifier réellement la mémoire quand il y a une Affectation.
Pour commencer à voir comment faire, il faut regarder le source de l'interface Contexte.

Le contexte donne un accès en lecture/écriture aux variables (que l'on a la responsabilité de nommer).
Une fois trouvée la fonction, ce n'est pas fini et il y a encore un boulot qui n'est peut-être pas évident : interprèter la valeur à mettre dans la variable. Il faut en fait "évaluer" l'expression dans l'affectation. L'"évaluation" se fait justement par la méthode "accepter(this.vi)" ; cela déclenche la suite d'appels qui concrétise/évalue l'expression contenue dans l'Affectation.

GANKAMA
Messages : 34
Inscription : 26 oct. 2017 16:51

Re: TP6 question3-1

Message par GANKAMA » 27 nov. 2017 22:42

Merci pour ta réponse et m'excuse pour mon manque de précision.
Si j'ai bien compris voila ce que je devrai faire:

public Contexte visite(Affectation a){

Contexte ctx=this.vi.contexte();//Récupération du contexte
Variable var=a.v(); //Récupération de la variable
String nomVariable=var.nom();//Récupération du nom de la variable
ctx.ecrire(nomVariable,a.exp().accepter(this.vi)); //écriture dans le contexte

return this.vi.contexte();
}

Cordialement

manuel.lb
Messages : 24
Inscription : 29 oct. 2017 16:59

Re: TP6 question3-1

Message par manuel.lb » 27 nov. 2017 23:11

Je t'en prie, en lisant je pense que c'est exactement ça (mais je n'ai pas comparé).

Je trouve assez difficile cette question 3 ; j'essaye de remplacer dans ma tête "accepter" par "évalue" (dans cette classe), "accepter" par "JAVA-ise" dans la classe ToJava, ..., et ça me permet de gagner un peu de temps en reflexion ^^

Répondre

Qui est en ligne ?

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