It is 'linear approximate lookahead' issue, which confuses lots of new users of ANTLR. In your case just shutdown the warning since it is harmless: ('\n'|'\r'(options{greedy=true;}:'\n')?) > > WS : ( ' ' > | '\t' > | ('\n'|'\r'('\n')?) {newline();} > )+ > { $setType(Token.SKIP); } > ; -- Xue Yong Zhi http://seclib.blogspot.com