| 2 |
|
|
| 3 |
let dump = ref None |
let dump = ref None |
| 4 |
let src = ref [] |
let src = ref [] |
| 5 |
|
let quiet = ref false |
| 6 |
|
|
| 7 |
let specs = |
let specs = |
| 8 |
[ "-dump", Arg.String (fun s -> dump := Some s), " specify filename for persistency" ] |
[ "-dump", Arg.String (fun s -> dump := Some s), |
| 9 |
|
" specify filename for persistency"; |
| 10 |
|
"-quiet", Arg.Set quiet, |
| 11 |
|
"suppress normal output (typing, results)" |
| 12 |
|
] |
| 13 |
|
|
| 14 |
let () = |
let () = |
| 15 |
Arg.parse specs (fun s -> src := s :: !src) |
Arg.parse specs (fun s -> src := s :: !src) |
| 16 |
"cduce [options] [script]\n\nOptions:" |
"cduce [options] [script]\n\nOptions:" |
| 17 |
|
|
| 18 |
let ppf = Format.std_formatter |
let ppf = |
| 19 |
|
if !quiet then Format.formatter_of_buffer (Buffer.create 1023) |
| 20 |
|
else Format.std_formatter |
| 21 |
|
let ppf_err = Format.err_formatter |
| 22 |
|
|
| 23 |
let do_file s = |
let do_file s = |
| 24 |
let (src, chan) = |
let (src, chan) = |
| 25 |
if s = "" then (`Stream, stdin) else (`File s, open_in s) in |
if s = "" then (`Stream, stdin) else (`File s, open_in s) in |
| 26 |
Location.set_source src; |
Location.set_source src; |
| 27 |
let input = Stream.of_channel chan in |
let input = Stream.of_channel chan in |
| 28 |
let ok = Cduce.run ppf input in |
let ok = Cduce.run ppf ppf_err input in |
| 29 |
if s <> "" then close_in chan; |
if s <> "" then close_in chan; |
| 30 |
if not ok then exit 1 |
if not ok then exit 1 |
| 31 |
|
|