On Tue, Apr 20, 2010 at 01:51:36PM +0200, Giampaolo Tomassoni wrote:

Oops, I see placed the { after the $ earlier, where it should
be outside the $paramater, like {$parameter}, as in:

protected
conditionalExpression[CommonTree TheActualASTRoot]
    :   QMARK t=expression COMMA f=expression
            -> ^(ITE {$TheActualASTRoot} $t $f)
    |
    ;

> ...
> 
> The specific question is: the above (piece of) tree grammar needs to compile
> with backtrack=true, which I don't like. I'm going to re-create a LLR
> grammar doing the same. I see it mimes a lot the parsing grammar I used to
> generate the source tree, but with a lot more cases in rules. This sounds
> fine to me, but then I'm still getting some problem:
> 
> 
> protected
> conditionalOrExpression
>     : OR FALSE r=conditionalOrExpression      {shc=true;}     -> $r
>     | OR TRUE conditionalOrExpression         {shc=true;}     -> TRUE
>     | OR l=conditionalAndExpression r=conditionalOrRightSide[$l.tree] -> $r
>     | conditionalAndExpression
>     ;
> 
> protected
> conditionalOrRightSide [CommonTree l]
>     : FALSE                   {shc=true;}     -> $l
>     | TRUE                    {shc=true;}     -> TRUE
>     | r=conditionalOrExpression               -> OR $l $r
>     ;

So maybe it might work like:

protected
conditionalOrRightSide [CommonTree l]
    :   FALSE                   {shc=true;}     -> $l
    |   TRUE                    {shc=true;}     -> TRUE
    |   r=conditionalOrExpression               -> OR {$l} $r
    ;
 
> conditionalOrExpression2 rises the error "(137): reference to undefined
> label in rewrite rule: $l", which is the same I got in the parsing grammar
> and which was circumvented by adopting a different notation (thanks to
> John).
> 
> I have ANTLR 3.2. Is it a bug or am I the bug?
> 
> Regards,
> 
> Giampaolo
> 
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: 
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> 

List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

-- 
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to