[antlr-interest] Gated semantic predicates without  lookahead?
    Gavin Lambert 
    antlr at mirality.co.nz
       
    Fri Feb 20 14:13:41 PST 2009
    
    
  
At 07:34 18/02/2009, Andreas Meyer wrote:
 >Let's say I have 600 keywords that I want to recognize as
 >something like an identifier, but in other places, I really
 >want different tokens.
 >
 >Currently, I have 600 rules that do some table lookup, so
 >that they consume an identifier and return one of the 600
 >possible artificial keyword tokens. But still, this makes
 >the stream of tokens look like an endless stream of
 >identifiers to the parser, and I have a vague feeling
 >that this might be not the best possible solution.
You're right, that's going to make the parser slower.
That's one of the reasons why I prefer the other approach to solve 
the "keywords as identifiers" problem -- recognise the keywords as 
individual tokens in the lexer, and then have a ridiculously long 
"identifier" rule in the parser that accepts the catch-all ID 
token in addition to all the tokens for the individual 
keywords.  Since that's an integer match against a tokenset, it 
ought to be significantly faster than repeated string 
comparisons.  (Having said that, I haven't actually *measured* 
this.)
(It is slightly more work to add a new keyword, though, since you 
have to put it in two places.)
    
    
More information about the antlr-interest
mailing list