[antlr-interest] Rewriting a list of tokens to a list of custom tokens

Christian chwchw at gmx.de
Thu Oct 20 03:49:40 PDT 2011


Works fine. Thanks, Jim !

I solely did not have to use keywords for the rule name, because 'void'
is a keyword in Java.

Many greetings,
Christian

Am 19.10.2011 23:38, schrieb Jim Idle:
> Sorry, I did not see that list thing, but I was trying to get you on the
> right track.
>
> First, don't use literals
> Put the tokens in subrules
> Change the token type in subrule (I usually just set the type field in the
> token, but that is a bit of a cheat)
> I don't have time to test every code snippet that I post here
>
>
> x: t1+=void (t2+=star)* -> ^(LIST $t1 $t2*) ;
>
> void: t=VOID -> TYPE[$t];
> stat: t=STAR -> TYPE[$t];
>
> VOID: 'void';
> STAR: '*';
>
> Jim
>
>
>
>> -----Original Message-----
>> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
>> bounces at antlr.org] On Behalf Of Christian
>> Sent: Wednesday, October 19, 2011 2:24 PM
>> To: antlr-interest at antlr.org
>> Subject: Re: [antlr-interest] Rewriting a list of tokens to a list of
>> custom tokens
>>
>> No, your solution still generates invalid java code for me. Did you
>> test your solution? The TYPE token does not accept a list as parameter.
>> It is a simple token defined within the token block at the top of the
>> grammar.
>> It seems that the construction of an implicit list is only possible for
>> rules and read token within the rule, but not for imaginary tokens. I
>> hope I am wrong.
>>
>> Please make more solution suggestions.
>>
>> Am 19.10.2011 17:40, schrieb Jim Idle:
>>> t1+='void' (t2+='*')* -> ^(LIST TYPE[$t1]+ TYPE[$t2]+)
>>>
>>> By interpolating from your question. At least, that should get you on
>>> the right track.
>>>
>>>
>>> Jim
>>>
>>>> -----Original Message-----
>>>> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
>>>> bounces at antlr.org] On Behalf Of Christian
>>>> Sent: Wednesday, October 19, 2011 5:40 AM
>>>> To: antlr-interest at antlr.org
>>>> Subject: [antlr-interest] Rewriting a list of tokens to a list of
>>>> custom tokens
>>>>
>>>> Hello ANTLR community,
>>>>
>>>> I want to get
>>>>
>>>>     t+='void' (t+='*')*
>>>>
>>>> to a list of a custom token type, say TYPE. That is, each
>>>> element/token of the list should change its original type to the
>> type TYPE.
>>>> The following approach does not work because invalid java code is
>>>> generated:
>>>>
>>>>     t+='void' (t+='*')* -> ^(TYPE[$t]+)
>>>>
>>>> The following implicit list generation works fine, however each
>>>> element retains its original type:
>>>>
>>>>     t+='void' (t+='*')* -> ^($t+)
>>>>
>>>> Can anyone tell me, whether and how this could be done?
>>>>
>>>> Thanks in advance,
>>>> Christian
>>>>
>>>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>>>> Unsubscribe:
>>>> http://www.antlr.org/mailman/options/antlr-interest/your-
>>>> email-address
>>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>>> Unsubscribe:
>>> http://www.antlr.org/mailman/options/antlr-interest/your-email-
>> address
>>
>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
>> email-address
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>



More information about the antlr-interest mailing list