Simplify the automaton encoding a bit (remove redundant predicates in formulae).
[tatoo.git] / src / naive_tree.ml
index 33c953d..89b9e86 100644 (file)
@@ -72,7 +72,9 @@ struct
           "NODE " ^  string_of_int n.preorder)
 
   let debug_node fmt node =
-    Format.fprintf fmt "{ tag=%s; preorder=%i; data=%S; first_child=%a; next_sibling=%a; parent=%a }"
+    Format.fprintf fmt
+      "{ tag=%s; preorder=%i; data=%S;\
+first_child=%a; next_sibling=%a; parent=%a }"
       (QName.to_string node.tag)
       node.preorder
       node.data
@@ -82,7 +84,8 @@ struct
 
 
   let debug_ctx fmt ctx =
-    Format.fprintf fmt "Current context: { preorder = %i\n; stack = \n%a\n }\n-------------\n"
+    Format.fprintf fmt "Current context: { preorder = %i\n; stack = \n%a\n }\
+\n-------------\n"
       ctx.current_preorder
       (Pretty.print_list ~sep:";\n" debug_node) ctx.stack
 
@@ -127,12 +130,11 @@ struct
     List.iter (do_attribute parser_ ctx) attr_list
 
   and do_attribute parser_ ctx (att, value) =
-    let att_tag = QName.to_string (QName.attribute (QName.of_string att)) in
-    start_element_handler parser_ ctx att_tag [];
+    start_element_handler parser_ ctx att [];
     let n = top ctx in
     n.data <- value;
     n.kind <- Tree.NodeKind.Attribute;
-    end_element_handler parser_ ctx att_tag
+    end_element_handler parser_ ctx att
 
   and consume_closing ctx n =
     if n.next_sibling != dummy then
@@ -167,14 +169,11 @@ struct
 
   and processing_instruction_handler parser_ ctx tag data =
     do_text parser_ ctx;
-    let pi = QName.to_string
-      (QName.processing_instruction (QName.of_string tag))
-    in
-    start_element_handler parser_ ctx pi [];
+    start_element_handler parser_ ctx tag [];
     let node = top ctx in
     node.data <- data;
     node.kind <- Tree.NodeKind.ProcessingInstruction;
-    end_element_handler parser_ ctx pi
+    end_element_handler parser_ ctx tag
 
 
   let character_data_handler _parser ctx text =
@@ -208,7 +207,7 @@ struct
        Expat.final psr;
        let root = List.hd ctx.stack in
        root.next_sibling <- nil;
-       let a = Array.create ctx.current_preorder nil in
+       let a = Array.make ctx.current_preorder nil in
        let rec loop n =
          if n != nil then
            begin
@@ -241,7 +240,7 @@ struct
       Expat.Expat_error e -> error e parser_
 
   let parse_file fd =
-    let buffer = String.create 4096 in
+    let buffer = String.make 4096 '\000' in
     let parser_, finalize = create_parser () in
     let rec loop () =
       let read = input fd buffer 0 4096 in
@@ -273,7 +272,7 @@ let output_escape_string out s =
 
 let rec print_attributes ?(sep=true) out tree_ node =
   if (node.kind == Tree.NodeKind.Attribute) then
-    let tag = QName.to_string (QName.remove_prefix node.tag) in
+    let tag = QName.to_string node.tag in
     if sep then output_char out ' ';
     output_string out tag;
     output_string out "=\"";
@@ -310,7 +309,7 @@ let rec print_xml out tree_ node =
         output_string out "-->"
     | ProcessingInstruction ->
         output_string out "<?";
-        output_string out (QName.to_string (QName.remove_prefix node.tag));
+        output_string out (QName.to_string  node.tag);
         output_char out ' ';
         output_string out node.data;
         output_string out "?>"