grammar X; options { output=AST; } tokens { R1_TOK; R2_TOK; } prog : rule+; rule : 'if' boolExpr r1 r2? -> ^(R1_TOK r1) (^(R2_TOK r2))? ; boolExpr : TF; r1 : B ; r2 : C; B : 'hello'; C : 'world'; TF : 'tf'; WS : (' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;} ;