[notes] During a global follow operation, we still collect semantic predicates as long as they are not dependent on local context [type] Parser [grammar] grammar T; @parser::members { } s : e {}? {} '!' ; t : e {}? ID ; e : ID | ; // non-LL(1) so we use ATN ID : 'a'..'z'+ ; INT : '0'..'9'+; WS : (' '|'\n') -> skip ; [start] s [input] a! [output] eval=true parse