1 | open Misc.ArgExt |
---|
2 | |
---|
3 | let default_choice = "default" |
---|
4 | let option_settings_step = "during option settings" |
---|
5 | |
---|
6 | let language_from_string kind default s = |
---|
7 | try |
---|
8 | Languages.from_string s |
---|
9 | with Not_found -> |
---|
10 | if s = default_choice then |
---|
11 | default |
---|
12 | else |
---|
13 | Error.global_error option_settings_step |
---|
14 | (Printf.sprintf "`%s' is not a valid %s language." s kind) |
---|
15 | |
---|
16 | let source_language_of_string = language_from_string "source" Languages.Clight |
---|
17 | let source_language = ref (source_language_of_string default_choice) |
---|
18 | let set_source_language s = source_language := source_language_of_string s |
---|
19 | let get_source_language () = !source_language |
---|
20 | |
---|
21 | let target_language_of_string = language_from_string "target" Languages.ASM |
---|
22 | let target_language = ref (target_language_of_string default_choice) |
---|
23 | let set_target_language s = target_language := target_language_of_string s |
---|
24 | let get_target_language () = !target_language |
---|
25 | |
---|
26 | let input_files = ref [] |
---|
27 | let add_input_file f = input_files := f :: !input_files |
---|
28 | let input_files () = !input_files |
---|
29 | |
---|
30 | let annotation_flag = ref false |
---|
31 | let request_annotation = (:=) annotation_flag |
---|
32 | let annotation_requested () = !annotation_flag |
---|
33 | |
---|
34 | let interpretation_flag = ref false |
---|
35 | let request_interpretation = (:=) interpretation_flag |
---|
36 | let interpretation_requested () = !interpretation_flag |
---|
37 | |
---|
38 | let debug_flag = ref false |
---|
39 | let set_debug = (:=) debug_flag |
---|
40 | let is_debug_enabled () = !debug_flag |
---|
41 | |
---|
42 | let dev_test = ref false |
---|
43 | let set_dev_test = (:=) dev_test |
---|
44 | let is_dev_test_enabled () = !dev_test |
---|
45 | |
---|
46 | let matita_output_flag = ref false |
---|
47 | let is_matita_output_enabled () = !matita_output_flag |
---|
48 | |
---|
49 | let options = OptionsParsing.register [ |
---|
50 | "-s", Arg.String set_source_language, |
---|
51 | " Choose the source language between:"; |
---|
52 | extra_doc " Clight, Cminor"; |
---|
53 | extra_doc " [default is C]"; |
---|
54 | |
---|
55 | "-l", Arg.String set_target_language, |
---|
56 | " Choose the target language between:"; |
---|
57 | extra_doc " Clight, Cminor, RTLabs, RTL, ERTL, LTL, LIN, ASM"; |
---|
58 | extra_doc " [default is ASM]"; |
---|
59 | |
---|
60 | "-a", Arg.Set annotation_flag, |
---|
61 | " Add cost annotations on the source code."; |
---|
62 | |
---|
63 | "-i", Arg.Set interpretation_flag, |
---|
64 | " Interpret the compiled code."; |
---|
65 | |
---|
66 | "-d", Arg.Set debug_flag, |
---|
67 | " Debugging mode."; |
---|
68 | |
---|
69 | "-dev", Arg.Set dev_test, |
---|
70 | " Playground for developers."; |
---|
71 | |
---|
72 | "-ma", Arg.Set matita_output_flag, |
---|
73 | " Output matita formatted Clight program."; |
---|
74 | ] |
---|