[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Pb de chargement d'environnement



Bonjour,


Je n'arrive pas a` exe'cuter mon fichier de se'mantique (se'mantique Exp
du tutorial) en mode debug.




Merci d'avance pour votre aide,
Philippe.



%%%% message de centaur %%%%

1/eval_exp$init_eval_exp$($PSP$cons($PSP$sint(153), $PSP$sint(-4960)))
eval_exp
REDISPLAY_RULE failed


%%%%%% Fichier de se'mantique %%%%
program eval_exp is

	use Exp;
	use Assignments;

	import
		add(_,_,_), sub(_,_,_),
		mult(_,_,_), neg(_,_),diff(_,_) from expfunc;



judgement ASSIGNS |- Exp: LITTERALINT, ASSIGNS;





export
	assign_s[assign(ident "RESULT", litteralint "0")]
		|- exp : litteralint n, env &
	UPDATE(env |- variable "RESULT", litteralint n : env')
as init_eval_exp(exp) = env';



export
	env |- exp: litteralint n, env' &
	UPDATE(env' |- variable "RESULT", litteralint n: env'')
as full_eval_exp(exp,env) = env'';






env |- litteralint N: litteralint N, env;



env |- EXP1: litteralint x1, env' &
env' |- EXP2: litteralint x2, env'' &
EVALUATE(|- BINOP, litteralint x1, litteralint x2 -> litteralint x)
-------------------------------------------------------------------
env |- bexp(EXP1,BINOP,EXP2) : litteralint x, env'';




env |- EXP: litteralint x1, env' &
EVALUATE(|- UNOP, litteralint x1 -> litteralint x)
--------------------------------------------------
env|- unexp(UNOP, EXP): litteralint x, env';




env |- EXP1: v,env'
-------------------
env |- exp_s[EXP1]: v,env';



env |- EXP1: v1, env' &
env' |- EXPS:v, env''
---------------------
env |- exp_s[EXP1.EXPS]:v, env'';



env |- EXP: v, env' &
UPDATE(env' |- variable V, v:env'')
-----------------------------------
env |- assign(variable V,EXP):v, env'';



GETVALUE(env |- variable V: v, anv')
------------------------------------
env |- variable V: v, env';







set UPDATE is


	judgement ASSIGNS |- VAR, LITTERALINT: ASSIGNS;


assign_s[] |- variable V, litteralint N:
	assign_s[assign(ident V, litteralint N)];


assign_s[assign(ident V, _).env] |- variable V, litteralint N:
	assign_s[assign(ident V, litteralint N).env];



env |- variable V, n : env'
---------------------------
assign_s[assign(ident V', EXP).env]
	|- variable V', n: assign_s[assign(ident V', EXP).env'];
provided diff(V,V');


end UPDATE;







set GETVALUE is

	judgement ASSIGNS |- VAR: LITTERALINT, ASSIGNS;


assign_s[] |- variable V: litteralint "0",
	      assign_s[assign(ident V, litteralint "0")];



assign_s[assign(ident V, litteralint N).env] |- variable V: litteralint N,
						assign_s[assign(ident V, litteralint N).env];



env |- variable V:n, env'
-------------------------
assign_s[assign(ident V', EXP).env]
	|- variable V: N, assign_s[assign(ident V',EXP).env'];
provided diff(V,V');



end GETVALUE;








set EVALUATE is

	judgement |- BINOP, LITTERALINT, LITTERALINT ->
		LITTERALINT;

	judgement |- UNOP, LITTERALINT ->
		LITTERALINT;


add(X1,X2,x)
------------
|- binop "+", litteralint X1, litteralint X2 -> litteralint x;



sub(X1,X2,x)
------------
|- binop "-", litteralint X1, litteralint X2 -> litteralint x;


mult(X1,X2,x)
-------------
|- binop "*", litteralint X1, litteralint X2 -> litteralint x;


neg(X1,x)
---------
|- unop "-", litteralint X1 -> litteralint x;


end EVALUATE;


end eval_exp;