Not sure if that actually solves it. Hard without having the grammar to test it..
I think 'markup: IDCON attributes arguments?' is one of the trouble makers, to be precise the attributes argument. As that goes to 'attribute' and that has options such as '#' IDCON. I think in that case the parser does not know what IDCON is for (markup or attribute rule). Not sure, just guessing here.. You could replace the IDCON in markup with something else (e.g. '???') to see if it helps reduce the errors. Maybe someone else can shed some light? On Sat, Aug 29, 2009 at 2:20 PM, 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 > Schagen<[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 >> >> > 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 -~----------~----~----~----~------~----~------~--~---
