[antlr-interest] Order of token matching

Jim Idle jimi at temporal-wave.com
Wed Sep 3 09:05:48 PDT 2008


On Wed, 2008-09-03 at 18:00 +0200, Jenny Balfer wrote:

> Hello guys,
> 
> I think I have too little understanding of the work of my lexer. I thought
> the rules that are specified first are matched first, but in my grammar
> this is not the case. 
> What I am trying to do is first skipping all comments of my source files,
> and then skipping everything between curly braces:
> 


Make sure that any token that you don't want returned to the parser is a
fragment:

fragment
MLCOM : '/*' ;

etc. Then you should have more luck, your comment lead-ins are matching
the MLCOM and SLCOM rules and then likely throwing recognition errors
for the rest up until the '{'

Jim


> MLCOM	:	'/*'
> 	;
> SLCOM	:	'//'
> 	;
> RCOM	:	'*/'
> 	;
> NL	:	'\r'			{skip();}
> 	|	'\n'			{skip();}
> 	;
> WS	:	' '			{$channel=HIDDEN;}
> 	|	'\t'			{skip();}
> 	;
> 
> COMMENT	:	SLCOM (options{greedy=false;}: .)* NL		{skip();}
> 	|	MLCOM (options{greedy=false;}: .)* RCOM		{skip();}
> 	;
> IMPL	:	'{' (IMPL|'}')* '}'	{skip();}
> 	;
> 
> Rule IMPL matches everything between curly braces, but in between counts
> them (by recursively calling itself). 
> Now the problem appears if there are braces in comments:
> 
> someFunction = function(a,b) {
>    // this is one brace too much: {
> }
> 
> My lexer now sees the opening brace in the comment and searches for the
> closing one until the end of file, which results in:
> mismatched character '<EOF>' expecting '}'
> 
> What I want my lexer to do is first sort out all comments, and second sort
> out everything between curly braces. Are there any predicates that could
> cause this?
> 
> Thanks!
> 
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20080903/d7a5b609/attachment.html 


More information about the antlr-interest mailing list