Release coccinelle-0.1.2
[bpt/coccinelle.git] / parsing_c / flag_parsing_c.ml
CommitLineData
34e49164
C
1(*****************************************************************************)
2(* convenient globals to pass to parse_c.init_defs *)
3(*****************************************************************************)
485bce71
C
4let path = ref
5 (try (Sys.getenv "YACFE_HOME")
6 with Not_found-> "/home/pad/c-yacfe"
7 )
8let std_h = ref (Filename.concat !path "data/standard.h")
9let common_h = ref (Filename.concat !path "data/common_macros.h")
10
34e49164
C
11
12let cmdline_flags_macrofile () =
13 [
14 "-macro_file", Arg.Set_string std_h,
15 " <file> (default=" ^ !std_h ^ ")";
485bce71
C
16 ]
17
18
19(*****************************************************************************)
20(* used only by cpp_ast_c, not by the parser *)
21(*****************************************************************************)
22let cpp_i_opts = ref []
23let cpp_d_opts = ref []
24
25let cmdline_flags_cpp () = [
26 "-D", Arg.String (fun s -> Common.push2 s cpp_d_opts),
27 " <x=y>";
28 "-I", Arg.String (fun s -> Common.push2 s cpp_i_opts),
29 " <dir>"
34e49164
C
30 ]
31
32(*****************************************************************************)
33(* verbose *)
34(*****************************************************************************)
35
36let verbose_lexing = ref true
37let verbose_parsing = ref true
38let verbose_type = ref true
39
40let filter_msg = ref false
485bce71
C
41let filter_msg_define_error = ref false
42
34e49164 43let filter_define_error = ref false
485bce71
C
44
45let filter_passed_level = ref 0
34e49164
C
46
47let pretty_print_type_info = ref false
48
49(* cocci specific *)
50let show_flow_labels = ref true
51
52
53let cmdline_flags_verbose () =
54 [
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, " ";
59
60
61 "-filter_msg", Arg.Set filter_msg ,
62 " filter some cpp message when the macro is a \"known\" cpp construct";
485bce71
C
63 "-filter_msg_define_error",Arg.Set filter_msg_define_error,
64 " filter the error msg";
65
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," ";
34e49164
C
69 ]
70
71
72(*****************************************************************************)
73(* debugging *)
74(*****************************************************************************)
75
76let debug_lexer = ref false
77let debug_etdt = ref false
78let debug_typedef = ref false
79let debug_cpp = ref false
80
81let debug_unparsing = ref false
82
83let debug_cfg = ref false
84
85(* "debug C parsing/unparsing", "" *)
86let cmdline_flags_debugging () =
87 [
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, " ";
92
93 "-debug_cfg", Arg.Set debug_cfg , " ";
94 "-debug_unparsing", Arg.Set debug_unparsing, " ";
95 ]
96
97(*****************************************************************************)
98(* change algo *)
99(*****************************************************************************)
100
34e49164
C
101(* cocci specific *)
102let label_strategy_2 = ref false
103
104let cmdline_flags_algos () =
105 [
485bce71
C
106 "-l1", Arg.Clear label_strategy_2, " ";
107 ]
108
109(*****************************************************************************)
110(* Disable parsing feature (for CC09 and also to see if useful) *)
111(*****************************************************************************)
112
113let cpp_directive_passing = ref false
114let ifdef_directive_passing = ref false
115
116let disable_two_pass = ref false
117let disable_add_typedef = ref false
118
119let if0_passing = ref true
120let add_typedef_root = ref true
121
122let cmdline_flags_parsing_algos () = [
123
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 ";
128
34e49164
C
129 "-noif0_passing", Arg.Clear if0_passing,
130 " ";
131 "-noadd_typedef_root", Arg.Clear add_typedef_root, " ";
485bce71 132 "-noadd_typedef", Arg.Set disable_add_typedef, " ";
34e49164 133
485bce71
C
134 "-disable_two_pass", Arg.Set disable_two_pass, " ";
135]
34e49164
C
136
137(*****************************************************************************)
138(* other *)
139(*****************************************************************************)
140
141(* for compare_c *)
142let diff_lines = ref (None : string option) (* number of lines of context *)
143
144(* for parse_c *)
145let use_cache = ref false
146
147let cmdline_flags_other () =
148 [
149 "-U", Arg.Int (fun n -> diff_lines := Some (Common.i_to_s n)),
150 " set number of diff context lines";
151
152 "-use_cache", Arg.Set use_cache,
153 " use .ast_raw pre-parsed cached C file";
154 ]
155
156
157(*****************************************************************************)
158