[antlr-interest] Change type of current AST

Terence Parr parrt at cs.usfca.edu
Fri Jun 6 14:26:08 PDT 2008


Oh, well $tree.type = foo; is what you want.
Ter
On Jun 6, 2008, at 1:50 PM, Dimitrios Kolovos wrote:

> 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