[antlr-interest] How to force error recovery?
Jim Idle
jimi at temporal-wave.com
Tue Oct 5 08:43:05 PDT 2010
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: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of Edson Tirelli
> Sent: Monday, October 04, 2010 3:27 PM
> To: antlr-interest at antlr.org
> 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
More information about the antlr-interest
mailing list