[antlr-interest] Rewrite Rules, inline to right side.
Shaun Bogan
smbogan at gmail.com
Sun Mar 9 14:23:21 PDT 2008
Thanks, that's exactly what I need.
Adapting that to:
assignops
: (boolops->boolops)(firstops b2=boolops -> ^(firstops ^(OPERAND
$assignops) ^(OPERAND $b2)))*
;
Is exactly what I needed.
Thanks
On Sun, Mar 9, 2008 at 4:10 PM, John Ridgway <john at jacelridge.com> wrote:
> Try it like this:
>
> rule
> : (b1=boolops -> $b1) (firstops b2=boolops -> ^(firstops $rule
> $b2) )*
> ;
>
> i.e., with parentheses around the first two things. I believe that
> otherwise it treats the entire rest of the line as being what it's
> going to output for the initial boolops.
>
> I think you also ought to be able to simplify it to:
>
> rule
> : (boolops -> boolops) ( firstops b2=boolops -> ^(firstops
> $rule $b2) )
> ;
>
>
> Peace
> - John
>
>
>
> On Mar 9, 2008, at 4:17 PM, Shaun Bogan wrote:
>
> > Thanks for the help.
> > Unfortunately, Antlr returns an error when I use the rule you
> > provided. It appears to not
> > like the second = sign. Says unexpected token '='. I pasted exactly
> > what you had and changed rule to the name of my rule (which is
> > assignops).
> >
> > Shaun
> >
> >
> > On Sun, Mar 9, 2008 at 1:56 PM, Johannes Luber <jaluber at gmx.de> wrote:
> >> Shaun Bogan schrieb:
> >>> Could someone tell me how to rewrite the following on the right-
> >>> hand side:
> >>> boolops (firstops^ boolops)*
> >>>
> >>
> >> rule
> >> : b1=boolops -> $b1 (firstops b2=boolops -> ^(firstops $rule
> >> $b2) )*
> >> ;
> >>
> >> should solve this.
> >>
> >> Johannes
> >>
>
>
More information about the antlr-interest
mailing list