permit multiline comments and strings in macros
[bpt/coccinelle.git] / parsing_c / lexer_parser.mli
1
2 val _handle_typedef : bool ref
3
4 val enable_typedef : unit -> unit
5 val disable_typedef : unit -> unit
6 val is_enabled_typedef : unit -> bool
7
8
9
10 (* private *)
11 type identkind = TypeDefI | IdentI
12 val _typedef : (string, identkind) Common.scoped_h_env ref
13
14 val add_ident : string -> unit
15 val add_typedef : string -> unit
16
17 val add_typedef_root : string -> unit
18
19 val new_scope : unit -> unit
20 val del_scope : unit -> unit
21
22 val is_typedef : string -> bool
23
24 val lexer_reset_typedef :
25 (string, identkind) Common.scoped_h_env option (* known typedefs *) -> unit
26
27 val _old_state : (string, identkind) Common.scoped_h_env ref
28 val save_typedef_state : unit -> unit
29 val restore_typedef_state : unit -> unit
30
31
32 type context =
33 | InTopLevel
34 | InFunction
35 | InStruct
36 | InParameter
37 | InInitializer
38 | InEnum
39
40 type lexer_hint = {
41 mutable context_stack: context Common.stack;
42 }
43
44 val _lexer_hint : lexer_hint ref
45 val current_context: unit -> context
46 val push_context: context -> unit
47 val pop_context: unit -> unit
48
49 val default_hint : unit -> lexer_hint
50
51 val is_top_or_struct : context -> bool
52