[antlr-interest] Relaxed number format lexer problem
Sam Harwell
sharwell at pixelminegames.com
Wed Apr 22 09:40:46 PDT 2009
I'm using a heavily relaxed NUMBER token in my lexer so I can provide
better error messages. The problem I'm having occurs when input such as
1..2 is reached. The '..' should be an OP_RANGE token, not part of the
number.
NUMBER
@after
{
ClassifyNumber($text);
}
: '.'? '0'..'9'
( // <-- It throws a NoViableAltException at this
decision when next the input is '..'
( '0'..'9'
| 'a'..'d'
| 'f'..'z'
| 'A'..'D'
| 'F'..'Z'
| ('.' ~'.') => '.'
)
| ('e' | 'E')
( ('+'|'-') => ('+' | '-')?
'0'..'9'
)?
)*
;
I found that I had to rearrange the rule in a strange way to get rid of
the error:
NUMBER
@after
{
ClassifyNumber($text);
}
: '.'? '0'..'9'
( ( ( '0'..'9'
| 'a'..'d'
| 'f'..'z'
| 'A'..'D'
| 'F'..'Z'
)
| '.' ('0'..'9' | 'a'..'d' | 'f'..'z' |
'A'..'D' | 'F'..'Z')
| '.'? ('e' | 'E')
( ('+'|'-') => ('+' | '-')?
'0'..'9'
)?
)
)*
( ('.' ~'.') => '.'
)?
;
Thank you,
Sam Harwell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090422/acaf16fe/attachment.html
More information about the antlr-interest
mailing list