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