[antlr-interest] Matching Last Line in ANTLR?

Dave Dutcher dave at tridecap.com
Tue Aug 18 06:21:32 PDT 2009


> -----Original Message-----
> From: consiliens at gmail.com
> 
> The last line, b., doesn't match the MC_INCORRECT token 
> because there's no newline after it. Is there an easy way to 
> match this in ANTLR?


Do you need the newline in the text of the token?  You could try removing
fragment from the NEWLINE rule and then setting it to the hidden channel.
Then have your lexer rules match everything except the new line characters.
Like this:

MC_QUESTION  : INT ('.'|')') ~('\n'|'\r')*; 
MC_INCORRECT : LETTER '.' ~('\n'|'\r')*;
MC_CORRECT   : '*' MC_INCORRECT;

NEWLINE : '\r'? '\n' { $channel = HIDDEN };

fragment LETTER  : ('a'..'z'|'A'..'Z');
fragment INT     : '0'..'9'+;

I'm kind of new at Antlr too, but I think that would work.

Dave



More information about the antlr-interest mailing list