[antlr-interest] Isn't the lexer supposed to break out from a rule upon EOF?
Rodrigo B. de Oliveira
rbo at acm.org
Fri Apr 23 05:47:41 PDT 2004
Hi!
I'm having trouble with an antlr generated C# lexer on rules such as the
following:
<snip>
SL_COMMENT:
"#"! (~('\r'|'\n')!)*
{ $setType(Token.SKIP); }
;
</snip>
The lexer refuses to return a token when it encounters an EOF inside the
inverted rule,
in other words, lexing a string like "#foo" would never return while lexing
something like "#foo\n" will.
Is this the expected behaviour?
My solution has been to add a specific check for EOF_CHAR to every inverted
rule in
my grammar:
<snip>
SL_COMMENT:
"#"! ({EOF_CHAR != LA(1)}?~('\r'|'\n')!)*
{ $setType(Token.SKIP); }
;
</snip>
Any thoughts are very welcome!
Thanks in advance,
Rodrigo
Yahoo! Groups Links
<*> To visit your group on the web, go to:
http://groups.yahoo.com/group/antlr-interest/
<*> To unsubscribe from this group, send an email to:
antlr-interest-unsubscribe at yahoogroups.com
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
More information about the antlr-interest
mailing list