-let test_slashslash tree k =
- let test =
- match k with "*" -> TagSet.remove (Tag.tag "") TagSet.star
- | s -> TagSet.singleton (Tag.tag k)
- in
- let attorstring = TagSet.cup TagSet.pcdata TagSet.attribute in
- let rec aux t acc =
- if Tree.Binary.is_node t
- then
- let tag = Tree.Binary.tag t in
- let l = Tree.Binary.first_child t
- and r = Tree.Binary.next_sibling t
- in
- let acc =
- if TagSet.mem tag test
- then
- TS.append t acc
- else
- acc
- in
- let rl = if TagSet.mem tag attorstring then acc else aux l acc
- in aux r rl
- else
- acc
- in
- let _ = Printf.eprintf "Testing optimal //%s ... " k in
- let r = time (aux tree ) TS.empty in
- Printf.eprintf "Result set is %i nodes\n%!" (TS.length r)
-
-
-let test_jump tree k =
- let ttag = Tag.tag k in
-
- let rec loop acc tree =
- if Tree.Binary.is_node tree
- then
- let acc = TS.cons tree acc in
- loop acc (Tree.Binary.tagged_next tree ttag)
- else
- acc
-
- in
- let _ = Printf.eprintf "Testing jumping for tag %s ... " k in
- let r = time (loop TS.empty ) (Tree.Binary.tagged_next tree ttag) in
- Printf.eprintf "Result set is %i nodes\n%!" (TS.length r)
-
-
-
-let test_traversal tree k =
- let ttag = Tag.tag k in
- let iid t = if Tree.Binary.is_node t then Tree.Binary.id t else -1 in
- let rec aux t =
- if Tree.Binary.is_node t
- then
- let tag = Tree.Binary.tag t in
- let l = Tree.Binary.first_child t
- and r = Tree.Binary.next_sibling t
- in
- let _ = Printf.eprintf "Tree with id %i and tag=%s, tagged_desc %s is %i tagged_foll is %i, tagged_next is %i\n%!"
- (Tree.Binary.id t) (Tag.to_string tag) (k)
- (iid (Tree.Binary.tagged_desc t ttag))
- (iid (Tree.Binary.tagged_foll t ttag))
- (iid (Tree.Binary.tagged_next t ttag))
- in
- aux l;
- aux r;
-
- else
- ()
- in
- aux tree
-
-let test_count_subtree tree k =
- let ttag = Tag.tag k in
- let _ = Printf.eprintf "Counting subtrees with tag %s ... %!" k in
- let r = time(Tree.Binary.subtree_tags tree) ttag in
- Printf.eprintf "%i nodes \n%!" r
-