[antlr-interest] Doubt About rewrite rulse

Jim Idle jimi at temporal-wave.com
Tue Aug 10 15:36:51 PDT 2010


Please use anltr.markmail.org as you will find many answers there.

But you need to respect the cardinality of your rewrite elements:

X? ->X?
X* ->X*
X+ ->X+

(a='+'|a='-') t2=fred -> ^($a $t2)

And so on.

Jim

> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of Victor Giordano
> Sent: Tuesday, August 10, 2010 1:31 PM
> To: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] Doubt About rewrite rulse
> 
> Thanks Junkman!!! But it's still doesn't work... :(.
> I have another example:
> 
> rule: TOKEN1? TOKEN2 -> ^(TOKEN1 TOKEN2) Works when token1 actually
> exists, but when no.. :( ugly things happen..
> 
> Well, thanks for advance again!!.
> Cya.
> 
> 
> 
> El 10/08/2010 05:00 p.m., Junkman escribió:
> > Hi Victor,
> >
> > Victor Giordano wrote:
> >> Hi, i am a newbie. Trying to figure out how to work with AST tree and
> >>
> >> ...
> >>
> >> butttttttt if i want to use rewrite rules... how do i thread the
> >> repetion EBNF operator like * or +.
> >>
> >> expr : term (('+'|'-') term)* ->  term ^(('+'|'-') term)* ;
> >>
> >
> > try this:
> >
> > expr: ( term ->  term )
> >        ( ( '+' | '-' ) term ->  ^( ( '+' | '-' ) $expr term ) )* ;
> >
> >
> > Not sure if the terms need to be distinguished with labels.
> >
> > The Antlr reference book describes the use of rewrite rule inside
> > subrule in more detail.
> >
> > J
> >
> 
> 
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-
> email-address



More information about the antlr-interest mailing list