Std.BiliBIL Interpreter.
bili extends expi with methods for evaluating BIL statements, thus allowing one to interpret BIL AST. To interpret BIL in the intermediate representation use biri.
Also, if you don't need to change the default behavior of the interpreter, then you may use Stmt.eval that exposes an easier interface for BIL evaluation. For example,
let x = Var.create "x" bool_t;; val x : var = x let ctxt = Stmt.eval [Bil.(x := int Word.b0)] (new Bili.context);; val ctxt : Bili.context = <obj> ctxt#bindings |> Seq.to_list;; - : (var * Bil.result) list = [(x, [0x1] false)]
class context : object ... endBili.context extends Expi.context with PC (Program Counter).
module type S = sig ... endinclude S with type ('a, 'e) state = ('a, 'e) Monads.Std.Monad.State.ttype ('a, 'e) state = ('a, 'e) Monads.Std.Monad.State.ttype 'a u = (unit, 'a) statetype 'a r = (Bil.result, 'a) stateclass 'a t : object ... endBase class for BIL interpreters