diff options
Diffstat (limited to 'src/lem_interp')
| -rw-r--r-- | src/lem_interp/interp_lib.lem | 3 | ||||
| -rw-r--r-- | src/lem_interp/run_interp.ml | 5 |
2 files changed, 6 insertions, 2 deletions
diff --git a/src/lem_interp/interp_lib.lem b/src/lem_interp/interp_lib.lem new file mode 100644 index 00000000..19f78df2 --- /dev/null +++ b/src/lem_interp/interp_lib.lem @@ -0,0 +1,3 @@ +open Interp ;; + +let eval_external name v = v ;; diff --git a/src/lem_interp/run_interp.ml b/src/lem_interp/run_interp.ml index 5708834d..940a43bb 100644 --- a/src/lem_interp/run_interp.ml +++ b/src/lem_interp/run_interp.ml @@ -1,6 +1,7 @@ open Printf ;; open Interp_ast ;; open Interp ;; +open Interp_lib ;; let lit_to_string = function | L_unit -> "unit" @@ -55,7 +56,7 @@ let act_to_string = function sprintf "write_mem %s(%s)%s = %s" (id_to_string id) (val_to_string args) (sub_to_string sub) (val_to_string value) | Call_extern (name, arg) -> - "extern call to " ^ name + sprintf "extern call %s applied to %s" name (val_to_string arg) ;; module Reg = struct @@ -77,7 +78,7 @@ let perform_action ((reg, mem) as env) = function V_lit L_unit, (Reg.update id value reg, mem) | Write_mem (id, args, None, value) -> V_lit L_unit, (reg, Mem.update (id, args) value mem) - | Call_extern (name, arg) -> failwith "extern calls not implemented" (* XXX *) + | Call_extern (name, arg) -> eval_external name arg, env | _ -> failwith "partial read/write not implemented" (* XXX *) ;; |
