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 <[email protected]> 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

> [email protected]> 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

> >

> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"il-antlr-interest" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en
-~----------~----~----~----~------~----~------~--~---

List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe: 
http://www.antlr.org/mailman/options/antlr-interest/your-email-address

Reply via email to