[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