I'll take a look. It is possible that something like that might have been 
overlooked as I am trying to reuse the memory and not keep freeing and 
mallocing exceptions.

Jim 

> -----Original Message-----
> From: [email protected] [mailto:antlr-interest-
> [email protected]] On Behalf Of Davis, Alan
> Sent: Tuesday, July 13, 2010 6:51 AM
> To: [email protected]
> Subject: [antlr-interest] error reporting problem in C runtime
> 
> I'm having a problem with error handling in the C target. In a file
> with multiple recognition failures on different lines, the second error
> is being reported with the same line number and proximity token as the
> first.
> 
> I think I have tracked down the problem but it seems incomprehensible
> that such a blatant problem would still be extant, so I'm wondering if
> I'm overlooking something.
> 
> The first recognition error causes an exception object to be created
> and recorded in recognizer->state->exception. However I cannot find
> anywhere where exceptions are freed. That is, after the first
> exception, recognizer->state->exception is never NULL; it continues to
> point to the first exception indefinitely.
> 
> The second error is a token mismatch, which results in a call to
> recoverFromMismatchedToken(), which does:
> 
>  // Create an exception if we need one
>  if (recognizer->state->exception == NULL)
>     antlr3RecognitionExceptionNew(recognizer);
> 
> The predicate fails because the first exception is still there... so
> the constructor is not called... so the fields pinpointing the error
> are not set... so the second error is reported with the same source
> filename and line number as the first.
> 
> I was able to fix this by overriding reportError(), adding code to call
> freeEx() and set recognizer->state->error to NULL. But it seems like
> this would be part of the standard library implementation -- or at
> least there would be something to take care of this.
> 
> My apologies if this a known issue -- I searched the various
> FAQs/Wikis/groups as best as I could.
> 
> Regards,
> Alan Davis
> Texas Instruments
> 
> 
> 
> 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.

Reply via email to