[antlr-interest] Change type of current AST

Dimitrios Kolovos dskolovos at gmail.com
Fri Jun 6 13:50:32 PDT 2008


Thanks for your prompt reply. It seems we are getting closer (but still 
no cigar :)

both $tree = and $additiveExpression.tree = produce

if ( state.backtracking==0 ) {
    retval.tree = Operator;
}

which does not seem to change the type of the AST (the getType() returns 
the value of a generated field named T_97). Everything else in the 
grammar seems to be working fine (no warnings, expected ASTs).

Cheers,
Dimitrios


Terence Parr wrote:
> Try $tree = or $additiveExpression.tree =  I believe.No doubt you are 
> getting an error from antlr below?
> Ter
> On Jun 6, 2008, at 1:17 PM, Dimitrios Kolovos wrote:
>
>> Hi Ter,
>>
>> Unfortunately, that doesn't seem to work either.
>>
>> additiveExpression
>>   :    multiplicativeExpression (('+'|'-')^ multiplicativeExpression 
>> {$additiveExpression.setType(Operator);})*
>>   ;
>>
>> in the parser grammar produces
>>
>> if ( state.backtracking==0 ) {
>>   $additiveExpression.setType(Operator);
>> }
>>
>> in the parser class.
>>
>> (I'm using 3.1b in case this makes a difference.)
>>
>> Cheers,
>> Dimitrios
>>
>> Terence Parr wrote:
>>> Use $ not #
>>> On Jun 6, 2008, at 6:27 AM, Dimitrios Kolovos wrote:
>>>
>>>> Hi,
>>>>
>>>> In ANTLR2 I was able to change the type of the current AST like this:
>>>>
>>>> additiveExpression
>>>>  :    multiplicativeExpression ((PLUS^|MINUS^) 
>>>> multiplicativeExpression {#additiveExpression.setType(OPERATOR);})*
>>>>  ;
>>>>
>>>> but I haven't been able to find how to do the same in v3. Any hints?
>>>>
>>>> Cheers,
>>>> Dimitrios
>>>
>>>
>
>


More information about the antlr-interest mailing list