[antlr-interest] XPath - identifiers are keywords

bob mcwhirter bob at werken.com
Tue Jul 2 15:35:20 PDT 2002


You might be interested at my first shot of XPath using antlr

	http://code.werken.com/

Look for werken.xpath

Specifically, the lexer and parser are here:

	http://code.werken.com/werken.xpath/src/com/werken/xpath/parser/

I managed to make it work, but there's certainly ugliness in
it.  I ended up punting for version 2, by using a completely
hand-rolled lexer/parser combination:

	http://jaxen.org/

-bob

On Tue, 2 Jul 2002, John Merrells wrote:

> 
> This is probably simple, but I've failed to find an explicit answer
> in the documentation or the FAQ. I have a language (XPath) and
> it has some keywords that can also be identifiers. How do I set
> up my lexer rules for this? The identifier is called NCNAME and
> is defined thus:
> 
> k=2;
> 
> NCNAME
>  : (LETTER|'_') (NCNAMECHAR)*
>  ;
> 
> protected
> NCNAMECHAR: LETTER|'0'..'9'|'.'|'-'|'_';
> 
> protected
> LETTER: ('a'..'z'|'A'..'Z');
> 
> The keyword is 'comment', and when it's a keyword it is always
> followed by '(' ')'. So I tried just adding...
> 
> COMMENT: "comment()";
> 
> But that's ambiguous, so I tried adding a lexer rule to disambiguate
> between them, but I either got that wrong, or it didn't work. Should
> I increase k to be length("comment()")? That seems like overkill.
> I'm sure there's something obvious that I'm missing here...
> 
> John
> 
> 
>  
> 
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 
> 
> 

--
Bob McWhirter        bob at werken.com
The Werken Company   http://werken.com/


 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 



More information about the antlr-interest mailing list