1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
(* $Id: test_negative.ml 662 2004-05-25 20:57:28Z gerd $
* ----------------------------------------------------------------------
*
*)
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 config
else
let index = new hash_index in
parse_document_entity
~id_index:(index :> 'ext index)
config
in
let tree =
parse_fn
(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);;
|