[antlr-interest] Re: Building trees with the correct associativity

lgcraymer lgc at mail1.jpl.nasa.gov
Wed Dec 1 19:53:46 PST 2004



--- In antlr-interest at yahoogroups.com, "Paul J. Lucas"
<pauljlucas at m...> wrote:
> On Thu, 2 Dec 2004, lgcraymer wrote:
> 
> > I miswrote the second case which should have been
> > 
> > addExpr
> >     :
> >     mulExpr  (addOp addExpr)?
> >     ;
> > 
> > and you can do the rewrite within the ()?.
> 
> 	That still doesn't work: the tree is still right-associative,
> 	i.e., 5 - 2 + 3 equals 0 instead of 6.
> 
> > Out of curiosity, why are you avoiding the more compact
> > 
> > addExpr
> >     :
> >     mulExpr (addOp^ mulExpr)*
> >     ;
> > 
> > The binary trees avoid inserting the extra node.
> 
> 	Because that's illegal syntax in ANTLR 2.7.x.  addOp is not a

Well, yeah, which is why (PLUS | MINUS) and (MUL | DIV) get sprinkled
through expression grammars.

> 	token.  But this is orthoganal to the problem at hand.

I'm not at all sure of that.  I think that the observation that the
normal tree construction here (via ^ annotation) is left associative.
 That's not an obvious point.

--Loring

> 	- Paul





 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/antlr-interest/

<*> To unsubscribe from this group, send an email to:
    antlr-interest-unsubscribe at yahoogroups.com

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 





More information about the antlr-interest mailing list