[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