[antlr-interest] Tree - Replace nodes in tree

Des Hartman des at deshartman.com
Thu Mar 19 18:55:25 PDT 2009


Michael

Thanks I got it sorted. Here is what I ended up doing, but at the parser
level.

@members {
 //============= Stub Code ===================================
    public function getInternalReference(local:String):Object {return null;}
}

localRefExpression
    : NAME { var iref:String = String(getInternalReference($NAME)); } ->
^(IREF NUMBER[iref])
    ;


This effectively matches a NAME and converts it to IREF NUMBER, with the
number derived from calling a overridden method to get the number based on
the letter used.

;-D



Thanks
Des



2009/3/19 Michael Bedward <michael.bedward at gmail.com>

> Hello Des,
>
> It's no problem to do this in a tree grammar.  For instance, here is
> an example from one of my tree grammars
>
> expr            : ^(ASSIGN assign_op var expr)
>                  -> {isImageVar($var.text)}? ^(IMAGE_WRITE var expr)
>                  -> ^(ASSIGN assign_op var expr)
>
> Here I replace an ASSIGN node with an IMAGE_WRITE node conditional on
> the result of a lookup in the predicate.
>
> Michael
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090320/3327bf2e/attachment.html 


More information about the antlr-interest mailing list