[antlr-interest] Tokens

Kevin J. Cummings cummings at kjchome.homeip.net
Fri Nov 27 15:25:51 PST 2009


On 11/27/2009 06:05 PM, Ronald Sok wrote:
> 
> 
> Kevin J. Cummings wrote:
>> You are close.  What you have here is keywords as opposed to reserved
>> words.  When implementing the former, you will need to do something like
>> (at least this is what I do using ANTLR 2.7.7):
>>
>> id : ID
>>    | k:keyword
>>       { #k->setType(ID); }
>>       // This changes the token type of a keyword to an ID
>>    ;
>>
>> keyword
>>    : APPLE | PEAR | ORANGE
>>    ;
>>
>> someName
>>    :     'Name:' id NEWLINE
>>    ;
>>
>> You could reduce the number of productions by folding, but the principal
>> of changing the token type of keywords is what is important here.  And
>> you may have to find out how to do this with ANTLR 3.x.
>>
>>
>>   
> Ok, I tried to change this into ANTLR 3 syntax, but ran into the fact that
> the result of keyword is a subtype of ParserRuleReturnScope, which

Sorry, my bad, should be KEYWORD and done in the lexer, not the parser!

> definitely is not a Token type. So trying to change the type of the token
> like how you showed in ANTLR 2.7.7 syntax does not work for me.
> This is what I have, which results in an error while generating the grammar.
> 
> id : ID
>    | keyword
>       { $type=ID; }
>       // from http://www.antlr.org/wiki/display/ANTLR3/Migrating+from+ANTLR+2+to+ANTLR+3
>    ;
> 
> 
> 
> 
> Ronald
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address


-- 
Kevin J. Cummings
kjchome at rcn.com
cummings at kjchome.homeip.net
cummings at kjc386.framingham.ma.us
Registered Linux User #1232 (http://counter.li.org)


More information about the antlr-interest mailing list