(* *)
(***********************************************************************)
+(* utils.ml-> INCLUDE "utils.ml" HASHINT2 () *)
+
type state = State.t
type label = QNameSet.t
StateSet.print asta.bottom;
pp "@[<v 0># Top states: %a@ @]"
StateSet.print asta.top;
- let print_list_tr fmt z=
+ let print_list_tr fmt z =
if SetT.is_empty z
then Format.fprintf fmt "ø"
else
SetT.iter (fun x -> Format.fprintf fmt "| %a @ " Transition.print x) z in
- let print_box_list fmt trans =
+ let print_box_list fmt trans =
Format.fprintf fmt " @[<hov 0>%a @]" print_list_tr trans in
Format.fprintf fmt "@[<v 0># Queries transitions:@ %a@ @]"
print_box_list asta.trans_q;
(* *)
(***********************************************************************)
-
-(* Il faut tout paramétrer par tr!!!! je ne sais pas comment faire >< **)
+INCLUDE "utils.ml"
module Node =
struct
- type t = Tree.node
- let tr = Tree.load_xml_string "<a></a>"
- let compare n1 n2 = (Tree.preorder tr n2) - (Tree.preorder tr n1)
+ type t = int
+ let hash n = n
+ let compare n1 n2 = n1 - n2
+ let equal n1 n2 = n1 = n2
end
-module NodeMap = Map.Make (Node)
-
-type t = StateSet.t NodeMap.t
-
-let compute tree asta = NodeMap.empty
-
-let print fmt run = ()
+module NodeHash = Hashtbl.Make (Node)
+
+type t = (StateSet.t*StateSet.t) NodeHash.t
+(** Map from node to query and recognizing states *)
+
+let compute tree asta =
+ let size_tree = 10000 in (* todo *)
+ let map = NodeHash.create size_tree in
+
+
+ map
+
+let print fmt run =
+ let print_d_set fmt (s_1,s_2) =
+ Format.fprintf fmt "@[<hov 0>(%a,@ %a)@]"
+ StateSet.print s_1 StateSet.print s_2 in
+ let print_map fmt run =
+ let pp = Format.fprintf fmt in
+ if NodeHash.length run = 0
+ then Format.fprintf fmt "ø"
+ else
+ NodeHash.iter (fun cle set -> pp "| %i-->%a@ " cle print_d_set set)
+ run in
+ let print_box fmt run =
+ let pp = Format.fprintf fmt in
+ pp "@[<v 0># Mapping: %a@ @]"
+ print_map run
+ in
+ Format.fprintf fmt "@[<v 1>##### RUN #####@, %a@ @]@." print_box run
+
let arg2 = Sys.argv.(2) in
if arg2 = "-f"
then let fq = open_in Sys.argv.(3) in
- let q = XPath.parse_file fq in
- close_in fq;
- fprintf err_formatter "Parse query OK ! ";
- q
+ let q = XPath.parse_file fq in
+ close_in fq;
+ fprintf err_formatter "Parse query OK ! ";
+ q
else let q = XPath.parse_string arg2 in
fprintf err_formatter "Parse query OK ! ";
q
Tree.print_xml stderr doc (Tree.root doc);
output_string stderr "\n";
Asta.print err_formatter asta;
- fprintf err_formatter "@[<v 0>##### Run #####@. %a@]\n"
- Run.print run;
+ Run.print err_formatter run;
exit 0