[antlr-interest] handling abbreviated keywords in ANTLR

Micheal J open.zone at virgin.net
Mon Jul 9 05:52:53 PDT 2007


Hi,

> Thank you Michael for the suggestion.
> 
> I was hoping there may be a programmatic alternative (I should have
> mentioned) to defining in the grammar each and every keyword 
> alternative.
> 
> I now see from some archived posts (ANTLR 2) suggestions of 
> over-riding testLiterals method and programmatically checking 
> the 'current' token against a hash.
> 
> Does anybody have an example of how to provide this 
> functionality in ANTLR 3 (other than defining each alternative)?

You could use an action in your generic identifier rule thus:

tokens
{
	APPLICATION;
	SEQUENCE;
	....
}

IDENTIFIER
	: 	( 'a'..'z'| ... )
		{ $type = CheckKeywordsTable(getText()) }
	;

CheckKeywordsTable might simply consult an IDictionary<string,int> map of
all keywords (incl abbreviations). It would return IDENTIFIER for all
non-keyword tokens.

This isn't tested code. Adapt and apply...

> Unfortunately the link he provides is dead:
> 
> http://antlr.org/doc/lexer.html#Keywords_and_literals

That has moved to the new V2-specific website. Try this instead:

 http://www.antlr2.org/doc/lexer.html#Keywords_and_literals


Micheal


-----------------------
The best way to contact me is via the list/forum. My time is very limited.



More information about the antlr-interest mailing list