[antlr-interest] Recursive rule invocation
jeroen.v.schagen at gmail.com
jeroen.v.schagen at gmail.com
Sat Aug 29 05:56:51 PDT 2009
Thanks for the response. I'm aware of the left factoring approach, however
then the alternative:
markup+ ';'
will have a higher priority then:
markup+ expression ';'
which is invalid for my language. Is there any way to specify priorities
other then the ordering of alternatives?
On Aug 29, 2009 2:20pm, Martijn Reuvers <martijn.reuvers at gmail.com> wrote:
> Hi Jeroen,
> I would rewrite the markupStatement like this:
> markupStatement :
> markup+ (expression | regularStatement | embedding)? ';'
> That way its valid again. The markup+ in each of your choices is the
> problem now I guess.
> Martijn
> On Sat, Aug 29, 2009 at 12:57 PM, Jeroen van
> Schagenjeroen.v.schagen at gmail.com> wrote:
> > Can somebody please tell me what is recursive about the markupStatement
> > production in the following grammar? The problem disappears when I
> remove
> > the expression NT symbol from argument, but this is required for my
> > language. Is it solvable without having to enable backtracking?
> > markupStatement: markup+ expression ';'
> > | markup+ regularStatement ';'
> > | markup+ embedding ';'
> > | markup+ ';'
> > ;
> > where..
> > markup: IDCON attributes arguments?
> > -> ^( MARKUP IDCON attributes arguments? ) ;
> > attributes: attribute*
> > -> ^( ATTRIBUTES attribute* );
> > attribute: '#' IDCON // ID attribute
> > | '.' IDCON // Class attribute
> > | '$' IDCON // Name attribute
> > | ':' IDCON // Type attribute
> > | '@' NATCON // Width attribute
> > | '@' NATCON '%' NATCON // Width-height attribute
> > ;
> > arguments: '(' argument? ( ',' argument )* ')' ;
> > argument: expression
> > | IDCON '=' expression ;
> > expression: ( IDCON | NATCON | TEXT | SYMBOLCON
> > | '[' expression? ( ',' expression )* ']' // List
> > | '{' keyValuePair? ( ',' keyValuePair )* '}' // Record
> > ) ( '+' expression | '.' IDCON )* ;
> > keyValuePair: IDCON ':' expression ;
> > regularStatement: 'echo' expression ';' ;
> > embedding: PRETEXT embed textTail ;
> > embed: markup* expression ;
> > textTail: POSTTEXT | MIDTEXT embed textTail ;
> >
> > List: http://www.antlr.org/mailman/listinfo/antlr-interest
> > Unsubscribe:
> > http://www.antlr.org/mailman/options/antlr-interest/your-email-address
> >
> >
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20090829/7371c5f1/attachment.html
More information about the antlr-interest
mailing list