[antlr-interest] lexing expression ('a'..'z')+ not matching single character input

Gavin Lambert antlr at mirality.co.nz
Wed Dec 13 01:05:34 PST 2006


At 06:10 13/12/2006, Matt Harrison wrote:
 >I am having trouble diagnosing why the (common) lexer expression 

 >"('a'..'z')+" is not matching any single character input (eg: 
"n")
 >in my grammar. Is there any situations under which this 
expression
 >should not match a single character in the range 'a' - 'z'?

I don't have the answer to your question, but I did notice:

 >CR
 >        : ( '\r' '\n' )
 >        | '\n'                                  {   newline();
 >$setType( Token.SKIP );  }
 >        ;

I'm fairly sure that this is wrong.  The action will be applied 
only to the second alt, meaning that when seeing '\r\n' in the 
stream it won't skip it.  You should add an extra set of 
parentheses around both alts, so you've only got a single unit 
before the action.



More information about the antlr-interest mailing list