This grammar allows "if if call call;" and "call if;".
grammar Pred; prog: stat+ ; stat: keyIF expr stat | keyCALL ID ';' | ';' ; expr: ID ; keyIF : {input.LT(1).getText().equals("if")}? ID ; keyCALL : {input.LT(1).getText().equals("call")}? ID ; ID : 'a'..'z'+ ; WS : (' '|'\n')+ {$channel=HIDDEN;} ;
The other alternative is to do something like this
identifier : KEY1 | KEY2 | ... | ID ;
which is a set comparison and should be faster.