[antlr-interest] trouble with ids and keywords
    Bob Marinier 
    bob.marinier at soartech.com
       
    Fri Feb  6 14:07:01 PST 2009
    
    
  
Hi,
I'm using antlr 2.7.6 and I have a problem with keywords and identifiers 
conflicting. Specifically, if I have an identifier that starts with a 
keyword, then the beginning gets picked up as a keyword, as opposed to 
the whole thing getting recognized as an identifier. For example, one of 
my keywords is "new". If the input contains "newX", then this gets 
tokenized as the "new" keyword and an identifier "X", whereas I want 
just an identifier "newX". That is, I want the identifier rule to be 
greedy, and only check the literals table after it's read as much as it can.
Here's the part of the lexer that I think is relevant:
class MyLexer extends Lexer;
options
{
    importVocab=Hlsr;
    charVocabulary = '\0'..'\377';
    testLiterals=false;    // don't automatically test for literals
    k=11;
}
NEW_EXPRESSION: "new";
IDENT
options
{
    testLiterals=true;
}
:
    ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'_'|'0'..'9')*
;
How can I fix the issue?
Thanks,
Bob
    
    
More information about the antlr-interest
mailing list