[antlr-interest] How to force error recovery?
Junkman
j at junkwallah.org
Tue Oct 5 09:52:04 PDT 2010
Just wanted to echo the note of thanks for writing the wiki article. :-)
J
On 10/5/2010 8:43 AM, Jim Idle wrote:
> 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
>
>
> 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