@@ -3,39 +3,18 @@ open Types
33let report_error errmsg =
44 print_string (" [ERROR IN MAIN] " ^ errmsg) ; print_newline ()
55
6- (* string -> string *)
7- let string_of_file_in file_name_in =
8- let str_in = ref " " in
9- let chnl_in = open_in file_name_in in
10- let cat_sub () =
11- while true do
12- str_in := ! str_in ^ (String. make 1 (input_char chnl_in))
13- done
14- in
15- try
16- ( cat_sub () ; " " )
17- with
18- End_of_file -> ( close_in chnl_in ; ! str_in )
19-
20- let rec string_of_file_in_list file_name_in_list =
21- match file_name_in_list with
22- [] -> " "
23- | head :: tail ->
24- let str_in =
25- try string_of_file_in head with
26- Sys_error (s ) -> report_error (" System error: " ^ s)
27- in
28- str_in ^ (string_of_file_in_list tail)
29-
30- (* string -> string -> unit *)
31- let file_out_of_string file_name_out content_out =
32- let chnl_out = open_out file_name_out in
33- output_string chnl_out content_out ;
34- close_out chnl_out
6+ let report_detail dtlmsg =
7+ print_string dtlmsg ; print_newline ()
358
369let main file_name_in_list file_name_out =
3710
38- let content_in = (string_of_file_in_list file_name_in_list) in
11+ let content_in = (
12+ try Files. string_of_file_in_list file_name_in_list with
13+ Sys_error (s ) -> (
14+ report_error (" System error - " ^ s) ;
15+ " "
16+ )
17+ ) in
3918 let lexed = Mcdlexer. mcdlex content_in in
4019 let parsed = Mcdparser. mcdparser lexed in
4120 let absed = Mcdabs. concrete_to_abstract parsed in
@@ -45,12 +24,12 @@ let main file_name_in_list file_name_out =
4524 IllegalOut -> " "
4625 in
4726 match content_out with
48- "" -> ( print_string " No output." ; print_newline () )
27+ "" -> report_detail " No output."
4928 | _ -> (
5029 try
51- file_out_of_string file_name_out content_out
30+ Files. file_out_of_string file_name_out content_out
5231 with
53- Sys_error (s ) -> report_error (" System error: " ^ s)
32+ Sys_error (s ) -> report_error (" System error - " ^ s)
5433 )
5534
5635let rec concat_list lsta lstb =
@@ -59,14 +38,17 @@ let rec concat_list lsta lstb =
5938 | head :: tail -> head :: (concat_list tail lstb)
6039
6140let rec see_argv num file_name_in_list file_name_out =
62- if num == Array. length Sys. argv then
41+ if num == Array. length Sys. argv then (
42+ report_detail (" [output] " ^ file_name_out) ;
6343 main file_name_in_list file_name_out
64- else (
65- if (compare Sys. argv.(num) " -o" ) == 0 then (
66- print_string (" [output] " ^ Sys. argv.(num + 1 )) ; print_newline () ;
67- see_argv (num + 2 ) file_name_in_list (Sys. argv.(num + 1 ))
68- ) else (
69- print_string (" [input] " ^ Sys. argv.(num)) ; print_newline () ;
44+ ) else (
45+ if (compare Sys. argv.(num) " -o" ) == 0 then
46+ try (
47+ see_argv (num + 2 ) file_name_in_list (Sys. argv.(num + 1 ))
48+ ) with
49+ Invalid_argument (s ) -> report_error " missing file name after '-o' option"
50+ else (
51+ report_detail (" [input] " ^ Sys. argv.(num)) ;
7052 see_argv (num + 1 ) (concat_list file_name_in_list [Sys. argv.(num)]) file_name_out
7153 )
7254 )
0 commit comments