summaryrefslogtreecommitdiff
path: root/src/lem_interp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lem_interp')
-rw-r--r--src/lem_interp/interp.lem2
-rw-r--r--src/lem_interp/run_interp.ml13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem
index a43fd241..57b3067b 100644
--- a/src/lem_interp/interp.lem
+++ b/src/lem_interp/interp.lem
@@ -932,7 +932,7 @@ let rec resume_main t_level stack value =
| Frame id exp env mem stack ->
match resume_main t_level stack value with
| Value v ->
- match interp_main t_level ((id,value)::env) mem exp with | (o,_,_) -> o end
+ match interp_main t_level ((id,v)::env) mem exp with | (o,_,_) -> o end
| Action action stack -> Action action (Frame id exp env mem stack)
| Error s -> Error s
end
diff --git a/src/lem_interp/run_interp.ml b/src/lem_interp/run_interp.ml
index ae830ef1..e3f51480 100644
--- a/src/lem_interp/run_interp.ml
+++ b/src/lem_interp/run_interp.ml
@@ -41,6 +41,18 @@ let rec val_to_string = function
sprintf "constructor %s %s" (id_to_string id) (val_to_string value)
;;
+let rec env_to_string = function
+ | [] -> ""
+ | [id,v] -> sprintf "%s |-> %s" (id_to_string id) (val_to_string v)
+ | (id,v)::env -> sprintf "%s |-> %s, %s" (id_to_string id) (val_to_string v) (env_to_string env)
+
+let rec stack_to_string = function
+ | Top -> "Top"
+ | Frame(id,exp,env,mem,s) ->
+ sprintf "(Frame of %s, e, (%s), m, %s)" (id_to_string id) (env_to_string env) (stack_to_string s)
+;;
+
+
let reg_to_string = function Reg (id,_) | SubReg (id,_,_) -> id_to_string id ;;
let sub_to_string = function None -> "" | Some (x, y) -> sprintf " (%d, %d)" x y
let act_to_string = function
@@ -88,6 +100,7 @@ let run (name, test) =
| Value v -> eprintf "%s: returned %s\n" name (val_to_string v)
| Action (a, s) ->
eprintf "%s: suspended on action %s\n" name (act_to_string a);
+ (*eprintf "%s: suspended on action %s, with stack %s\n" name (act_to_string a) (stack_to_string s);*)
let return, env' = perform_action env a in
eprintf "%s: action returned %s\n" name (val_to_string return);
loop env' (resume test s return)