+++ /dev/null
-(* $Id$
- * ----------------------------------------------------------------------
- *
- *)
-
-
-open Pxp_document;;
-open Pxp_yacc;;
-open Pxp_types;;
-
-let error_happened = ref false;;
-
-let rec prerr_error e =
- prerr_endline (string_of_exn e)
-;;
-
-
-class warner =
- object
- method warn w =
- prerr_endline ("WARNING: " ^ w)
- end
-;;
-
-
-let compile in_filename out_filename print super_root pis comments =
- let spec =
- let e = new element_impl default_extension in
- make_spec_from_mapping
- ~super_root_exemplar: e
- ~default_pinstr_exemplar: e
- ~comment_exemplar: e
- ~data_exemplar: (new data_impl default_extension)
- ~default_element_exemplar: e
- ~element_mapping: (Hashtbl.create 1)
- ()
- in
- let config =
- { default_config with
- encoding = `Enc_utf8;
- warner = new warner;
- enable_super_root_node = super_root;
- enable_pinstr_nodes = pis;
- enable_comment_nodes = comments;
- }
- in
- try
- let tree =
- parse_document_entity
- config
- (from_file in_filename)
- spec
- in
-
- let ch = open_out out_filename in
- Pxp_codewriter.write_document ch tree;
- output_string ch "(create_document (new Pxp_types.drop_warnings) Pxp_yacc.default_spec) # write (Pxp_types.Out_channel stdout) `Enc_utf8;;\n";
- close_out ch;
-
- if print then
- tree # write (Out_channel stdout) `Enc_utf8;
- with
- e ->
- error_happened := true;
- prerr_error e
-;;
-
-
-let main() =
- let in_file = ref "" in
- let out_file = ref "" in
- let print_file = ref false in
- let super_root = ref false in
- let pis = ref false in
- let comments = ref false in
- Arg.parse
- [ "-in", (Arg.String (fun s -> in_file := s)),
- " <file> Set the XML file to read";
- "-out", (Arg.String (fun s -> out_file := s)),
- " <file> Set the Ocaml file to write";
- "-print", (Arg.Set print_file),
- " Print the XML file in standard form";
- "-super-root", Arg.Set super_root,
- " Generate a super root node";
- "-pis", Arg.Set pis,
- " Generate wrapper nodes for processing instructions";
- "-comments", Arg.Set comments,
- " Generate nodes for comments";
- ]
- (fun x -> raise (Arg.Bad "Unexpected argument"))
- "
-usage: compile [ options ]
-
-List of options:";
- if !in_file = "" then begin
- prerr_endline "No input file specified.";
- exit 1
- end;
- if !out_file = "" then begin
- prerr_endline "No output file specified.";
- exit 1
- end;
- compile !in_file !out_file !print_file !super_root !pis !comments
-;;
-
-
-main();
-if !error_happened then exit(1);;
-
-(* ======================================================================
- * History:
- *
- * $Log$
- * Revision 1.1 2000/11/17 09:57:35 lpadovan
- * Initial revision
- *
- * Revision 1.4 2000/08/17 01:20:15 gerd
- * Update: Also tested whether super root nodes, pinstr nodes
- * and comment nodes work.
- * Note: comment nodes are not fully tested yet.
- *
- * Revision 1.3 2000/08/16 23:44:19 gerd
- * Updates because of changes of the PXP API.
- *
- * Revision 1.2 2000/07/16 17:54:15 gerd
- * Updated because of PXP interface changes.
- *
- * Revision 1.1 2000/07/09 00:33:32 gerd
- * Initial revision.
- *
- *)