[antlr-interest] Rewriting to Flat Tree Nodes for Associative Multiary Operators

Randall R Schulz rschulz at sonic.net
Thu Oct 2 16:01:08 PDT 2008


On Thursday 02 October 2008 15:23, Jim Idle wrote:
> On Thu, 2008-10-02 at 15:01 -0700, Randall R Schulz wrote:
> > On Thursday 02 October 2008 14:29, Jim Idle wrote:
> > > Have you tried:
> > >
> > >
> > > o : v1=nextrule
> > >           (
> > >               (Or v2+=nextrule )+ ->^(OR $v1 $v2+)
> > >
> > >             | // No OR's, default tree
> > >
> > >           )
> > >     ;
> > >
> > >
> > > Or something similar?
> >
> > Well, it looks to me like it's very similar to what I did try, and
> > this, too, yields the
> > org.antlr.runtime.tree.RewriteEmptyStreamException.
> >
> > Whether you include an empty alternative (as you showed) or make
> > the entire sub-rule optional, as I'd tried earlier:
>
> Yeah but you are referencing the rule itself there. If you get a
> rewrite exception then it could be a bug. I will try a small example
> - if htat works, then perhaps your lower down rules are returning
> empty trees in cases of error or something way.

I'm sure the more deeply nested rules aren't returning empty trees, 
because they're the same rules I use to successfully produce the fully 
nested trees I'm trying to avoid.


Randall Schulz


More information about the antlr-interest mailing list