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

Bart Kiers bkiers at gmail.com
Thu Aug 25 08:25:53 PDT 2011


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
>


More information about the antlr-interest mailing list