[antlr-interest] Rewriting Repeatable Prefix Operators To Nested AST Structure
Gavin Lambert
antlr at mirality.co.nz
Thu Oct 2 12:39:43 PDT 2008
At 08:24 3/10/2008, Randall R Schulz wrote:
>op350Formula
> : (
> Not -> ^(Not $op350Formula)
> ) *
> (primitiveFormula -> primitiveFormula)
> ;
The reason why you're getting the RewriteEmptyStreamException
there is that on the first pass through you're trying to use the
tree $op350Formula in the rewrite, but it's empty.
You can avoid the error by changing $op350Formula to
$op350Formula?, but this still won't produce the tree you want --
for the input "---a", you'll get the tree "^(NOT ^(NOT ^(NOT))) a"
The right way to do it is to actually recurse:
op350Formula
: Not a=op350Formula -> ^(Not $a)
| primitiveFormula -> primitiveFormula
;
More information about the antlr-interest
mailing list