]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/pxp/pxp/rtests/negative/test_negative.ml
Initial revision
[helm.git] / helm / DEVEL / pxp / pxp / rtests / negative / test_negative.ml
diff --git a/helm/DEVEL/pxp/pxp/rtests/negative/test_negative.ml b/helm/DEVEL/pxp/pxp/rtests/negative/test_negative.ml
new file mode 100644 (file)
index 0000000..13f049c
--- /dev/null
@@ -0,0 +1,105 @@
+(* $Id$
+ * ----------------------------------------------------------------------
+ *
+ *)
+
+
+open Pxp_document;;
+open Pxp_yacc;;
+open Pxp_types;;
+
+let error_happened = ref false;;
+
+let rec print_error e =
+  print_endline (string_of_exn e)
+;;
+
+class warner =
+  object 
+    method warn w =
+      print_endline ("WARNING: " ^ w)
+  end
+;;
+
+let parse debug wf iso88591 filename =
+  try 
+  let config =
+      { default_config with 
+         warner = new warner;
+          debugging_mode = debug;
+          encoding = if iso88591 then `Enc_iso88591 else `Enc_utf8;
+         idref_pass = true;
+      }
+  in
+    let parse_fn =
+      if wf then parse_wfdocument_entity 
+      else 
+       let index = new hash_index in
+       parse_document_entity 
+         ?transform_dtd:None 
+         ~id_index:(index :> 'ext index)
+    in
+    let tree =
+      parse_fn
+       config
+       (from_file filename)
+       default_spec
+    in
+    print_endline "Parsed without error";
+  with
+      e ->
+       error_happened := true;
+       print_error e
+;;
+
+
+let main() =
+  let debug = ref false in
+  let wf = ref false in
+  let iso88591 = ref false in
+  let files = ref [] in
+  Arg.parse
+      [ "-d",   Arg.Set debug, "turn debugging mode on";
+       "-wf",  Arg.Set wf,    "check only on well-formedness";
+        "-iso-8859-1", Arg.Set iso88591, "use ISO-8859-1 as internal encoding instead of UTF-8";
+      ]
+      (fun x -> files := x :: !files)
+      "
+usage: test_negative [options] file ...
+
+List of options:";
+  files := List.rev !files;
+  List.iter (parse !debug !wf !iso88591) !files;
+;;
+
+
+main();
+if !error_happened then exit(1);;
+
+(* ======================================================================
+ * History:
+ * 
+ * $Log$
+ * Revision 1.1  2000/11/17 09:57:33  lpadovan
+ * Initial revision
+ *
+ * Revision 1.6  2000/07/14 14:57:12  gerd
+ *     Updated: warner
+ *
+ * Revision 1.5  2000/07/14 14:20:11  gerd
+ *     Updated because of PXP interface changes.
+ *
+ * Revision 1.4  2000/07/09 01:49:09  gerd
+ *     Updated because of PXP interface changes.
+ *
+ * Revision 1.3  2000/06/04 20:31:21  gerd
+ *     Updates because of renamed PXP modules.
+ *
+ * Revision 1.2  2000/05/28 17:23:22  gerd
+ *     Updated.
+ *
+ * Revision 1.1  2000/05/01 15:58:50  gerd
+ *     Initial revision.
+ *
+ * 
+ *)