[antlr-interest] [c target] some questions about errors catching
Jim Idle
jimi at temporal-wave.com
Sun Sep 27 10:41:20 PDT 2009
On 09/27/2009 07:22 AM, Юрушкин Михаил wrote:
> good day.
> I have some questions about an errors-processing alogirthm in Antlr:
>
> 1) Antlr generates strange code. If no alternatives are right, it does the
> following:
>
> ...
> default:
> CONSTRUCTEX();
> EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION;
> EXCEPTION->message = (void *)"";
> EXCEPTION->decisionNum = 34;
> EXCEPTION->state = 0;
>
>
> goto ruleattr_specEx;
> }
>
>
> - initializes exception... and CLEANS some information. Why?
>
Error recovery. Read the docs for the exception handling and error
recovery logic if you want to know more, but for error reporting and so
on, you don't really need to know much - just use the pre-supplied error
message display routine as a guide - I tried to make it access
everything that one woudl need so you can see what to do. See
displayRecognitionError.
In release 3.2.1 I am going to fold that code into an internal function
to reduce the line count of the output code and possibly the object code
size.
> 2) after the finishing of processing nonterminal
> rec->state->errors_count = 0 Why?? It has detected an error already.
>
>
I presume you mean errorCount? Is this from the lexer? I fixed a bug
whereby the lexer would not count errors - fixed in release 3.2.
However, lexers should really be written so they don't throw recognition
errors, but detect anomalies and report them more directly (such as
missing terminating quotes and illegal characters. FInally don;t use
intenrals directly, use the api calls: getNumberOfSyntaxErrors
Jim
More information about the antlr-interest
mailing list