Module Eval

eval.ml

include Eval__.Vm
type vm_atom = string * link array
and vm_atom_elt = vm_atom Util.DList.element
val null_atom_elt : vm_atom_elt

レジスタを初期化するためだけのアドレス(本来はいらない)

リンクを初期化するためだけのアドレス(本来はいらない)

type registers = vm_atom_elt array

レジスタ

val init_register : int -> registers

初期状態のレジスタを確保する

NormalLink コンストラクタを剥がす

val get_functor : ('a * 'b array) Util.DList.element array -> int -> 'a * int

ファンクタを取得する

val free_atom : (string * 'a) Util.DList.element -> (string * 'a) Util.DList.element

Free memory fragment of the given address. Possibly implemented with option type and assign None.

module AtomLists = Eval__.Vm.AtomLists

アトムリストの Map.

val atom_list : vm_atom Util.DList.t

アトムリスト

アトムリストの dumper

リンクの解消

val dump_atom : (vm_atom * int) list -> 'a -> ('b * link array) -> 'a * ('b * vm_dump_link list)
val dump_atom_list : vm_atom Util.DList.t AtomLists.t -> (int * (string * vm_dump_link list)) list
val reduce : Eval__.Vm.vm_atom Util.DList.t Eval__.Vm.AtomLists.t -> ('a * (int * (Generator.lhs_inst list * Parse.arg list * Generator.rhs_inst list))) -> ('a * Eval__.Vm.vm_atom Util.DList.t Eval__.Vm.AtomLists.t) option

Try to reduce one step with the given atoms and a rule

  • ルール適用に成功したら Some で包んだ更新された atom_list を返す
val run_once : Eval__.Vm.vm_atom Util.DList.t Eval__.Vm.AtomLists.t -> ('a * (int * (Generator.lhs_inst list * Parse.arg list * Generator.rhs_inst list))) list -> ('a * Eval__.Vm.vm_atom Util.DList.t Eval__.Vm.AtomLists.t) option

Try reduce one step with the given atoms and rules

val init_atoms : (int * Generator.rhs_inst list) -> Eval__.Vm.vm_atom Util.DList.t Eval__.Vm.AtomLists.t

push the initial graph and return their references