[antlr-interest] AST Tree rewriting

Des Hartman des at deshartman.com
Mon Mar 16 04:53:02 PDT 2009


Floris

Thanks a million. Just one of those silly things I missed. Added it and it
works. I also noticed I need "[" "]" around the variables.

So the correct version of the below is:

tree grammar L2ITree;

options {
    language=ActionScript;
    tokenVocab=Formula;
    output=AST;
    filter=true;
    rewrite=true;
}

@members {
    // This function gets overriden in the main code. Returns the IREF value
based on LREF value.
    public function convertLocalReference(ref:CommonTree):Number {return
null;}

}

reference
    : ^(LREF   lr=NAME) { iref:Number = convertLocalReference($lr); }
-> ^(IREF [iref])
    ;



Thanks
Des



2009/3/16 Floris van Nee <floris.vannee at gmail.com>

> Hi Des,
>
> I think you need to specify output=AST in the options section.
>
> Floris
>
> 2009/3/16 Des Hartman <des at deshartman.com>
>
>> I has just been reading up about AST tree rewriting and it seems to be
>> exactly what I need. However I am struggling to compile what I believe is a
>> very simple tree.  I have tried it with language=Java, but the same errors.
>> Looks like ANTLRWorks does not understand tree rewrites??? The problem I am
>> having is that ANTLRWorks 1.2.3 with antlr-3.1.2 complains and will not
>> compile this code. It says
>>
>> "Unexpected token: ^("
>> "expecting SEMI, found ')' "
>>
>> LREF and IREF are defined in the Parser Formula and convertLocalReference
>> converts a reference like "A" to "{1}" in code.
>>
>>
>>
>> tree grammar L2ITree;
>>
>> options {
>>     language=ActionScript;
>>     tokenVocab=Formula;
>>     ASTLabelType=CommonTree;
>>     filter=true;
>>     rewrite=true;
>> }
>>
>> @members {
>>     // This function gets overriden in the main code. Returns the IREF
>> value based on LREF value.
>>     public function convertLocalReference(ref:CommonTree):Number {return
>> null;}
>>
>> }
>>
>> reference
>>     : ^(LREF   lr=NAME) { iref:Number = convertLocalReference($lr);
>> }       -> ^(IREF iref)
>>     ;
>>
>> ===================================================
>> Thanks
>> Des
>>
>>
>>
>> List: http://www.antlr.org/mailman/listinfo/antlr-interest
>> Unsubscribe:
>> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090316/164cb3bf/attachment.html 


More information about the antlr-interest mailing list