implementation).
(***********************************************************************)
(*
- Time-stamp: <Last modified on 2013-03-04 23:40:26 CET by Kim Nguyen>
+ Time-stamp: <Last modified on 2013-03-05 16:20:32 CET by Kim Nguyen>
*)
open Utils
"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
in
print_xml out tree_ node.next_sibling
-
+let print_xml out tree_ node = print_xml out tree_ { node with next_sibling = nil }
let root t = t.root
let first_child _ n = n.first_child
let next_sibling _ n = n.next_sibling
let tag _ n = n.tag
let data _ n = n.data
let preorder _ n = n.preorder
+
+let print_node fmt n = Parser.debug_node fmt n
(***********************************************************************)
(*
- Time-stamp: <Last modified on 2013-02-07 09:59:48 CET by Kim Nguyen>
+ Time-stamp: <Last modified on 2013-03-05 14:08:25 CET by Kim Nguyen>
*)
-(** Implementation of documents as binary trees *)
-
-type node
-(** The type of a tree node *)
-
-type t
-(** The type of trees *)
-
-val nil : node
-(** Nil node, denoting the first/second child of a leaf or the parent of
- the root *)
-
-val dummy : node
-(** Dummy node that is guaranteed to never occur in any tree *)
-
-val load_xml_file : in_channel -> t
-(** Takes a file descriptor and returns the XML data stored in the
- corresponding file. Start at the current position in the file
- descriptor (which is not necessarily the begining of file)
-*)
-
-val load_xml_string : string -> t
-(** Loads XML data stored in a string *)
-
-val print_xml : out_channel -> t -> node -> unit
-(** Outputs the tree as an XML document on the given output_channel *)
-
-
-val root : t -> node
-(** Returns the root of the tree *)
-
-val first_child : t -> node -> node
-(** [first_child t n] returns the first child of node [n] in tree [t].
- Returns [nil] if [n] is a leaf. Returns [nil] if [n == nil].
-*)
-
-val next_sibling : t -> node -> node
-(** [next_sibling t n] returns the next_sibling of node [n] in tree [t].
- Returns [nil] if [n] is the last child of a node.
- Returns [nil] if [n == nil].
-*)
-
-val parent : t -> node -> node
-(** [next_sibling t n] returns the parent of node [n] in tree [t].
- Returns [nil] if [n] is the root of the tree.
- Returns [nil] if [n == nil].
-*)
-
-val tag : t -> node -> Utils.QName.t
-(** Returns the label of a given node *)
-
-val data : t -> node -> string
-(** Returns the character data associated with a node.
- The only node having character data are those whose label is
- QName.text, QName.cdata_section or QName.comment
- *)
-
-val preorder : t -> node -> int
-(** Returns the position of a node in pre-order in the tree. The
- root has preorder 0. [nil] has pre-order [-1].
-*)
+include Sig.S
--- /dev/null
+(***********************************************************************)
+(* *)
+(* TAToo *)
+(* *)
+(* Kim Nguyen, LRI UMR8623 *)
+(* Université Paris-Sud & CNRS *)
+(* *)
+(* Copyright 2010-2012 Université Paris-Sud and Centre National de la *)
+(* Recherche Scientifique. All rights reserved. This file is *)
+(* distributed under the terms of the GNU Lesser General Public *)
+(* License, with the special exception on linking described in file *)
+(* ../LICENSE. *)
+(* *)
+(***********************************************************************)
+
+(*
+ Time-stamp: <Last modified on 2013-03-05 15:12:47 CET by Kim Nguyen>
+*)
+
+(** Implementation of documents as binary trees *)
+module type S =
+sig
+ type node
+ (** The type of a tree node *)
+
+ type t
+ (** The type of trees *)
+
+ val nil : node
+ (** Nil node, denoting the first/second child of a leaf or the parent of
+ the root *)
+
+ val dummy : node
+ (** Dummy node that is guaranteed to never occur in any tree *)
+
+ val load_xml_file : in_channel -> t
+ (** Takes a file descriptor and returns the XML data stored in the
+ corresponding file. Start at the current position in the file
+ descriptor (which is not necessarily the begining of file)
+ *)
+
+ val load_xml_string : string -> t
+ (** Loads XML data stored in a string *)
+
+ val print_xml : out_channel -> t -> node -> unit
+ (** Outputs the tree as an XML document on the given output_channel *)
+
+
+ val root : t -> node
+ (** Returns the root of the tree *)
+
+ val first_child : t -> node -> node
+ (** [first_child t n] returns the first child of node [n] in tree [t].
+ Returns [nil] if [n] is a leaf. Returns [nil] if [n == nil].
+ *)
+
+ val next_sibling : t -> node -> node
+ (** [next_sibling t n] returns the next_sibling of node [n] in tree [t].
+ Returns [nil] if [n] is the last child of a node.
+ Returns [nil] if [n == nil].
+ *)
+
+ val parent : t -> node -> node
+ (** [next_sibling t n] returns the parent of node [n] in tree [t].
+ Returns [nil] if [n] is the root of the tree.
+ Returns [nil] if [n == nil].
+ *)
+
+ val tag : t -> node -> Utils.QName.t
+ (** Returns the label of a given node *)
+
+ val data : t -> node -> string
+ (** Returns the character data associated with a node.
+ The only node having character data are those whose label is
+ QName.text, QName.cdata_section or QName.comment
+ *)
+
+ val preorder : t -> node -> int
+ (** Returns the position of a node in pre-order in the tree. The
+ root has preorder 0. [nil] has pre-order [-1].
+ *)
+
+ val print_node : Format.formatter -> node -> unit
+end