[antlr-interest] Order of token matching

Jenny Balfer ai06087 at Lehre.BA-Stuttgart.De
Wed Sep 3 09:14:55 PDT 2008


Thanks for that, but unfortunately this does not solve the problem. I
declared MLCOM etc. as fragment, but COMMENT and IMPL must not be fragments
in order to skip them. 

On Wed, 03 Sep 2008 09:05:48 -0700, Jim Idle <jimi at temporal-wave.com>
wrote:
> 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
>>



More information about the antlr-interest mailing list