ocaml/camlp4/odyl/odyl.ml

58 lines
2.0 KiB
OCaml

(* camlp4r *)
(***********************************************************************)
(* *)
(* Camlp4 *)
(* *)
(* Daniel de Rauglaudre, projet Cristal, INRIA Rocquencourt *)
(* *)
(* Copyright 2001 Institut National de Recherche en Informatique et *)
(* Automatique. Distributed only by permission. *)
(* *)
(***********************************************************************)
(* $Id$ *)
value apply_load () =
let i = ref 1 in
let stop = ref False in
while not stop.val && i.val < Array.length Sys.argv do {
let s = Sys.argv.(i.val) in
if s = "-I" && i.val + 1 < Array.length Sys.argv then do {
Odyl_main.directory Sys.argv.(i.val + 1);
i.val := i.val + 2
}
else if s = "-nolib" then do { Odyl_main.nolib.val := True; incr i }
else if s = "-where" then do {
print_string Odyl_config.standard_library;
print_newline ();
flush stdout;
exit 0
}
else if s = "-version" then do {
print_string Sys.ocaml_version;
print_newline ();
flush stdout;
exit 0
}
else if s = "--" then do { incr i; stop.val := True; () }
else if String.length s > 0 && s.[0] == '-' then stop.val := True
else if Filename.check_suffix s ".cmo" || Filename.check_suffix s ".cma"
then do { Odyl_main.loadfile s; incr i }
else stop.val := True
}
;
value main () =
try do { apply_load () ; Odyl_main.go.val () } with
[ Odyl_main.Error fname str ->
do {
flush stdout;
Printf.eprintf "Error while loading \"%s\": " fname;
Printf.eprintf "%s.\n" str;
flush stderr;
exit 2
} ]
;
Printexc.catch main ();