| Exp of expression (* only in dotted statement lists *)
| TopExp of expression (* for macros body *)
| Ty of typeC (* only at top level *)
+ | TopInit of initialiser (* only at top level *)
| Disj of string mcode * statement dots list * string mcode list *
string mcode
| Nest of string mcode * statement dots * string mcode *
WhenNot of 'a
| WhenAlways of 'b
| WhenModifier of Ast_cocci.when_modifier
+ | WhenNotTrue of expression
+ | WhenNotFalse of expression
and statement = base_statement wrap
| CaseLineTag of case_line
| TopTag of top_level
| IsoWhenTag of Ast_cocci.when_modifier (*only for when code, in iso phase*)
+ | IsoWhenTTag of expression(*only for when code, in iso phase*)
+ | IsoWhenFTag of expression(*only for when code, in iso phase*)
| MetaPosTag of meta_pos (* only in iso phase *)
val dotsExpr : expression dots -> anything