(* Symbol i.e identifier *)
| Pvar (loc, name) -> begin
try
(* Send Variable loc *)
let idx = senv_lookup name ctx in
(make_var name idx loc), ctx;
with Not_found ->
(* Add Variable *)
let ctx = senv_add_var name loc ctx in
(make_var name 0 loc), ctx; end
Ça n'a pas l'air correct: si "name" n'est pas dans le contexte, alors c'est simplement une erreur.
La fonction ne devrait pas renvoyer de contexte.
Stefan