Reading through the (great) ANTLR book, I see there is code in there to use if you want to exit the recogniser on first error. It's not 100% ideal (in case I want to ever report more than 1 error in a row in the future), but I may try that out shortly.
I would still be interested to work out how to avoid this issue in future grammars. Mark On Mon, Jan 24, 2011 at 4:44 PM, Mark Mandel <[email protected]> wrote: > Hey guys, > > My grammar can be seen here: > > http://coldspring.git.sourceforge.net/git/gitweb.cgi?p=coldspring/coldspring;a=blob;f=antlr/com/coldspring/aop/expression/AopExpression.g;h=b80ef8a7ddd854458791e4e044a8f09461b66c50;hb=HEAD > > It's a parser for a subset of AspectJ expressions, with some minor > modifications (if anyone cares ;o) ). > > An example expression would be: > @annotation(dostuff='true') > > I've used predicate in my lexer to work pick up the first item in the > expression, i.e. an expression should always start with 'target', '@target', > 'execution', 'within' or '@annotation' > > If I have a typo in the expression that is being entered, e.g. > > @annotaion(dostuff='true') > > I get the following output: > line 1:7 mismatched character 'i' expecting 't' > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > line 1:8 rule DESCRIPTOR failed predicate: {expressionStart}? > .... (infinite loop) .... > > The errors are perfectly correct, but the infinite loop is a bit of a > problem, as I'm sure you can understand. > > Is this a bug in ANTLR, or is there a way I can fix/change my grammar (or > add in some custom code), so that I don't fall into the infinite loop? (or > escape out of it) > > I'm guessing this is because ANTLR tries to recover from an error whenever > it encounters one. (Which I would also be happy to turn off, I only need the > 1st error for my purposes at the moment). > > Any help would be appreciated. > > Mark > > > -- > E: [email protected] > T: http://www.twitter.com/neurotic > W: www.compoundtheory.com > > cf.Objective(ANZ) - Nov 18, 19 - Melbourne Australia > http://www.cfobjective.com.au > > Hands-on ColdFusion ORM Training > www.ColdFusionOrmTraining.com > -- E: [email protected] T: http://www.twitter.com/neurotic W: www.compoundtheory.com cf.Objective(ANZ) - Nov 18, 19 - Melbourne Australia http://www.cfobjective.com.au Hands-on ColdFusion ORM Training www.ColdFusionOrmTraining.com 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.
