-
Wilke Pierre authoredWilke Pierre authored
prog.ml 693 B
open Utils
type 'a gdef = Gfun of 'a
type 'a prog = (string * 'a gdef) list
let dump_gdef dump_fun oc gd =
match gd with
| (fname, Gfun f) ->
dump_fun oc fname f;
Format.fprintf oc "\n"
let dump_prog dump_fun oc =
List.iter (dump_gdef dump_fun oc)
type 'a state = {
env: (string, 'a) Hashtbl.t;
mem: Mem.t
}
let init_state memsize =
{
mem = Mem.init memsize;
env = Hashtbl.create 17;
}
let set_val env v i =
Hashtbl.replace env v i
let get_val env v =
Hashtbl.find_opt env v
let find_function (ep: 'a prog) fname : 'a res =
match List.assoc_opt fname ep with
| Some (Gfun f) -> OK f
| _ -> Error (Format.sprintf "Unknown function %s\n" fname)