1 (*****************************************************************************)
2 (* convenient globals to pass to parse_c.init_defs *)
3 (*****************************************************************************)
5 (try (Sys.getenv
"YACFE_HOME")
6 with Not_found
-> "/home/pad/c-yacfe"
8 let std_h = ref (Filename.concat
!path "data/standard.h")
9 let common_h = ref (Filename.concat
!path "data/common_macros.h")
12 let cmdline_flags_macrofile () =
14 "-macro_file", Arg.Set_string
std_h,
15 " <file> (default=" ^
!std_h ^
")";
19 (*****************************************************************************)
20 (* used only by cpp_ast_c, not by the parser *)
21 (*****************************************************************************)
22 let cpp_i_opts = ref []
23 let cpp_d_opts = ref []
25 let cmdline_flags_cpp () = [
26 "-D", Arg.String
(fun s
-> Common.push2 s
cpp_d_opts),
28 "-I", Arg.String
(fun s
-> Common.push2 s
cpp_i_opts),
32 (*****************************************************************************)
34 (*****************************************************************************)
36 let verbose_lexing = ref true
37 let verbose_parsing = ref true
38 let verbose_type = ref true
40 let filter_msg = ref false
41 let filter_msg_define_error = ref false
43 let filter_define_error = ref false
45 let filter_passed_level = ref 0
47 let pretty_print_type_info = ref false
50 let show_flow_labels = ref true
53 let cmdline_flags_verbose () =
55 "-no_parse_error_msg", Arg.Clear
verbose_parsing, " ";
56 "-no_verbose_parsing", Arg.Clear
verbose_parsing , " ";
57 "-no_verbose_lexing", Arg.Clear
verbose_lexing , " ";
58 "-no_type_error_msg", Arg.Clear
verbose_type, " ";
61 "-filter_msg", Arg.Set
filter_msg ,
62 " filter some cpp message when the macro is a \"known\" cpp construct";
63 "-filter_msg_define_error",Arg.Set
filter_msg_define_error,
64 " filter the error msg";
66 "-filter_define_error",Arg.Set
filter_define_error,
67 " filter the error, which will not be added in the stat";
68 "-filter_passed_level",Arg.Set_int
filter_passed_level," ";
72 (*****************************************************************************)
74 (*****************************************************************************)
76 let debug_lexer = ref false
77 let debug_etdt = ref false
78 let debug_typedef = ref false
79 let debug_cpp = ref false
81 let debug_unparsing = ref false
83 let debug_cfg = ref false
85 (* "debug C parsing/unparsing", "" *)
86 let cmdline_flags_debugging () =
88 "-debug_cpp", Arg.Set
debug_cpp, " ";
89 "-debug_lexer", Arg.Set
debug_lexer , " ";
90 "-debug_etdt", Arg.Set
debug_etdt , " ";
91 "-debug_typedef", Arg.Set
debug_typedef, " ";
93 "-debug_cfg", Arg.Set
debug_cfg , " ";
94 "-debug_unparsing", Arg.Set
debug_unparsing, " ";
97 (*****************************************************************************)
99 (*****************************************************************************)
102 let label_strategy_2 = ref false
104 let cmdline_flags_algos () =
106 "-l1", Arg.Clear
label_strategy_2, " ";
109 (*****************************************************************************)
110 (* Disable parsing feature (for CC09 and also to see if useful) *)
111 (*****************************************************************************)
113 let cpp_directive_passing = ref false
114 let ifdef_directive_passing = ref false
116 let disable_two_pass = ref false
117 let disable_add_typedef = ref false
119 let if0_passing = ref true
120 let add_typedef_root = ref true
122 let cmdline_flags_parsing_algos () = [
124 "-directive_passing", Arg.Set
cpp_directive_passing,
125 " pass most cpp directives, especially when inside function";
126 "-ifdef_passing", Arg.Set
ifdef_directive_passing,
127 " pass ifdef directives ";
129 "-noif0_passing", Arg.Clear
if0_passing,
131 "-noadd_typedef_root", Arg.Clear
add_typedef_root, " ";
132 "-noadd_typedef", Arg.Set
disable_add_typedef, " ";
134 "-disable_two_pass", Arg.Set
disable_two_pass, " ";
137 (*****************************************************************************)
139 (*****************************************************************************)
142 let diff_lines = ref (None
: string option) (* number of lines of context *)
145 let use_cache = ref false
147 let cmdline_flags_other () =
149 "-U", Arg.Int
(fun n
-> diff_lines := Some
(Common.i_to_s n
)),
150 " set number of diff context lines";
152 "-use_cache", Arg.Set
use_cache,
153 " use .ast_raw pre-parsed cached C file";
157 (*****************************************************************************)