[antlr-interest] Lexer issues when block ends with EOF instead ofEOL

Sam Harwell sharwell at pixelminegames.com
Wed Feb 11 11:05:25 PST 2009


This works because lexer tokens are greedy:

 

LINE_COMMENT

        :       '//' (~('\n'|'\r'))* '\r'? '\n'?

                { $channel=HIDDEN; }

        ;

 

Sam

 

From: antlr-interest-bounces at antlr.org
[mailto:antlr-interest-bounces at antlr.org] On Behalf Of Brent Yates
Sent: Wednesday, February 11, 2009 11:52 AM
To: antlr-interest at antlr.org
Subject: [antlr-interest] Lexer issues when block ends with EOF instead
ofEOL

 

Assuming a standard LINE comment form such as:

 

SL_COMMENT

    : '//'  ( options {greedy=false;} : . )*  '\r'? '\n'
{$channel=HIDDEN;}

    ;

 

What is the best way to handle a file which ends with a single line
comment but no EOL?

 

If I add the EOF to the rule I get the following error:

 

SL_COMMENT

    : '//'  ( options {greedy=false;} : . )*  '\r'? ('\n'|EOF)
{$channel=HIDDEN;}

    ;

 

ANTLR Parser Generator  Version 3.1.1

error(201): SystemVerilogLexer.g:592:43: The following alternatives can
never be matched: 1

 

This problem occurs with other rules as well.  Is it expected that files
which end with no EOL are bad or should the lexer handle it?

 

Thanks.

 

Brent Yates

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090211/300e1cb8/attachment.html 


More information about the antlr-interest mailing list