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

Jim Idle jimi at temporal-wave.com
Thu Oct 2 15:23:02 PDT 2008


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.


> 
> op790FormulaFlat
>     :   (op780FormulaFlat -> op780FormulaFlat)
>         ( Or rDisjuncts = op790FormulaFlat) + )
>     ->  ^(Or $op790FormulaFlat $rDisjuncts+)
>     ) ?
>     ;
> 
> the result is the same: RewriteEmptyStreamException.
> 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20081002/f51e8c2c/attachment.html 


More information about the antlr-interest mailing list