Please read the article in the wiki on error recovery methods. You can see there how to keep a parse loop going instead of it breaking out. You can also see a real world example if you download the source code for the JavaFX compiler, as I wrote the error recovery article after writing that parser.
http://www.antlr.org/wiki/display/ANTLR3/Custom+Syntax+Error+Recovery Jim > -----Original Message----- > From: [email protected] [mailto:antlr-interest- > [email protected]] On Behalf Of Edson Tirelli > Sent: Monday, October 04, 2010 3:27 PM > To: [email protected] > Subject: [antlr-interest] How to force error recovery? > > Hi all, > > Look at this simple grammar: > > grammar testGrammar; > options { > output=AST; > } > > compilationUnit > : statement* EOF > ; > > statement > : A^ > | B^ C > ; > > A : 'a'; > > B : 'b'; > > C : 'c'; > > WS : ( ' ' > | '\t' > | '\r' > | '\n' > ) {$channel=HIDDEN;} > ; > > > Using the above grammar, it will successfully parse an input like: > > a b c a > > Now, if the input is: > > a c a > > The generated parser will parse "a", and will fail at "c", as it is not a valid > statement. Reading the error recovery chapter on the ANTLR book, I would > imagine ANTLR would delete/skip the "c" token and try to recover, > successfully parsing the second "a", as that is a valid statement again. But it is > not working like this. It is aborting the parsing with an error at "c". > > Question: how do I force it to recover from the error and continue parsing? > > The actual scenario is that the parser I am working on is used by an IDE > environment (eclipse), so we need it to continue parsing and presenting the > users with all the errors found in the file, not just the first one. The error > recovery seems to work on some rules, but not on the top rule > (compilationUnit). > > Thanks, > Edson > > -- > Edson Tirelli > JBoss Drools Core Development > JBoss by Red Hat @ www.jboss.com > > 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.
