[antlr-interest] Rewriting an AST with the same type listed twice

Garry Watkins garry at dynafocus.com
Thu Aug 25 08:48:21 PDT 2011


Thanks for the quick response.  However I cannot get it to recognize the
'map' '<' construct.  That is ok.

Next question.  I am trying to re-write this but it complains about this
with a "reference to undefined token in rewrite rule."

constList
: '[' cv+=constValue (',' cv+=constValue)* ']' -> ^('constval' $cv+)
;


On Thu, Aug 25, 2011 at 11:25 AM, Bart Kiers <bkiers at gmail.com> wrote:

> Hi Garry,
>
> You either use inline operators ^ and !, or use a rewrite rule, not both.
> To reference a rule, add a $ before its label:
>
> mapType
>   :  'map' '<' k=anyType ',' v=anyType '>' -> ^('map' $k $v)
>   ;
>
> but I think this should work too:
>
> mapType
>   :  'map' '<' anyType ',' anyType '>' -> ^('map' anyType anyType)
>   ;
>
> Regards,
>
> Bart.
>
> On Thu, Aug 25, 2011 at 5:22 PM, Garry Watkins <garry at dynafocus.com>wrote:
>
>>  mapType
>>
>> : 'map' '<'! anyType ','! anyType '>'!
>> | 'map<' k=anyType ','! v=anyType '>'! -> ^('map' k v)
>> ;
>>
>>
>> I am trying to re-write the AST generated on this alternative:
>>
>> | 'map<' k=anyType ','! v=anyType '>'! -> ^('map' k v)
>>
>>
>> How does one alias the anyTypes?  I am getting an error on the code above?
>>
>> However the bigger question is my parser won't recognize the following
>> map<string,string> if it uses just the first line in my rule.  However, it
>> will recognize map <string,string>.
>>
>> Thanks
>> Garry
>>
>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>> Unsubscribe:
>> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>>
>
>


-- 
Garry Watkins
Managing Director
DynaFOCUS, LLC
(843) 608-8004 (google voice)
(843) 276-6808 (cell)


More information about the antlr-interest mailing list