INCLUDE "html_trace.ml"
END
-
let mk_fun f s = D_IGNORE_(register_funname f s,f)
let mk_app_fun f arg s = let g = f arg in
D_IGNORE_(register_funname g ((get_funname f) ^ " " ^ s), g)
let choose_jump_down a b c d =
choose_jump a b c d
(mk_fun (Tree.mk_nil) "Tree.mk_nil")
- (mk_fun (Tree.text_below) "Tree.text_below")
- (mk_fun (fun _ -> Tree.node_child) "[TaggedChild]Tree.node_child") (* !! no tagged_child in Tree.ml *)
- (mk_fun (fun _ -> Tree.node_child) "[SelectChild]Tree.node_child") (* !! no select_child in Tree.ml *)
+ (mk_fun (Tree.first_child) "Tree.text_below")
+ (mk_fun (Tree.tagged_child) "Tree.tagged_child")
+ (mk_fun (Tree.select_child) "Tree.select_child") (* !! no select_child in Tree.ml *)
(mk_fun (Tree.tagged_desc) "Tree.tagged_desc")
- (mk_fun (fun _ -> Tree.node_child ) "[SelectDesc]Tree.node_child") (* !! no select_desc *)
- (mk_fun (Tree.node_child) "Tree.node_child")
+ (mk_fun (Tree.select_desc) "Tree.select_desc") (* !! no select_desc *)
+ (mk_fun (Tree.first_child) "Tree.first_child")
let choose_jump_next a b c d =
choose_jump a b c d
(mk_fun (fun t _ -> Tree.mk_nil t) "Tree.mk_nil2")
- (mk_fun (Tree.text_next) "Tree.text_next")
- (mk_fun (fun _ -> Tree.node_sibling_ctx) "[TaggedSibling]Tree.node_sibling_ctx")(* !! no tagged_sibling in Tree.ml *)
- (mk_fun (fun _ -> Tree.node_sibling_ctx) "[SelectSibling]Tree.node_sibling_ctx")(* !! no select_sibling in Tree.ml *)
+ (mk_fun (Tree.next_sibling_ctx) "Tree.text_next")
+ (mk_fun (Tree.tagged_sibling_ctx) "Tree.tagged_sibling_ctx")(* !! no tagged_sibling in Tree.ml *)
+ (mk_fun (Tree.select_sibling_ctx) "Tree.select_sibling_ctx")(* !! no select_sibling in Tree.ml *)
(mk_fun (Tree.tagged_foll_ctx) "Tree.tagged_foll_ctx")
- (mk_fun (fun _ -> Tree.node_sibling_ctx) "[SelectFoll]Tree.node_sibling_ctx")(* !! no select_foll *)
- (mk_fun (Tree.node_sibling_ctx) "Tree.node_sibling_ctx")
+ (mk_fun (Tree.select_foll_ctx) "Tree.select_foll_ctx")(* !! no select_foll *)
+ (mk_fun (Tree.next_sibling_ctx) "Tree.node_sibling_ctx")
module SetTagKey =
in
let null_result() = (pempty,Array.make slot_size RS.empty) in
- let rec loop t slist ctx =
+ let rec loop t slist ctx =
if Tree.is_nil t then null_result() else get_trans t slist (Tree.tag t) ctx
and loop_tag tag t slist ctx =
let empty_res = null_result() in
let cont =
match f_kind,n_kind with
- | `NIL,`NIL -> (fun _ _ -> null_result())
+ | `NIL,`NIL ->
+ (fun _ _ -> eval_fold2_slist fl_list t empty_res empty_res )
| _,`NIL -> (
match f_kind with
|`TAG(tag) ->
| `ANY ->
(fun t _ -> eval_fold2_slist fl_list t empty_res
(loop (first t) llist t))
- | _ -> assert false)
+ | _ -> assert false)
| `NIL,_ -> (
match n_kind with
|`TAG(tag) ->
- (fun t ctx -> eval_fold2_slist fl_list t
+ (fun t ctx -> eval_fold2_slist fl_list t
(loop_tag tag (next t ctx) rlist ctx) empty_res)
| `ANY ->
(loop (next t ctx) rlist ctx)
(loop (first t) llist t) )
| _ -> assert false
+ in
+ let cont = D_IF_( (fun t ctx ->
+ let a,b = cont t ctx in
+ register_trace t (slist,a,fl_list,first,next,ctx);
+ (a,b)
+ ) ,cont)
in
(CachedTransTable.add td_trans (tag,slist) cont;cont)
in cont t ctx
| `TAG (tag) ->
(*Tree.tagged_lowest t tag, fun tree -> Tree.tagged_next tree tag*)
(Tree.tagged_desc tag t, fun tree -> Tree.tagged_foll_ctx tag tree t)
- | `CONTAINS(_) -> (Tree.text_below t,fun tree -> Tree.text_next tree t)
+ | `CONTAINS(_) -> (Tree.first_child t,fun tree -> Tree.next_sibling_ctx tree t)
| _ -> assert false
in
let tree2 = jump_fun tree1 in