module type S = sig type result_set val top_down_run : Ata.t -> Tree.t -> Tree.node -> result_set val bottom_up_run : Ata.t -> Tree.t -> Compile.text_query * string -> result_set val grammar_run : Ata.t -> Grammar2.t -> unit -> result_set end module Make (U : ResJIT.S) : S with type result_set = U.NS.t type 'a result_ops = { empty : 'a; subtree_tags : Tree.t -> Tree.node -> Tag.t -> 'a; subtree_elements : Tree.t -> Tree.node -> 'a; exec : 'a array -> 'a array -> 'a array -> Tree.node -> ResJIT.code -> unit; } val top_down_run : 'a result_ops -> Ata.t -> Tree.t -> Tree.node -> 'a