On 10/21/11 12:35 AM, "Jim Idle" <j...@temporal-wave.com> wrote:

Okay I see ... Thank you for point.


Hmm. 

Jim, I think it will be better and simpler, if you will add right into
antlr3baserecognizer.c file this small function

void* recoverFromMismatchedToken_off(
    pANTLR3_BASE_RECOGNIZER recognizer, ANTLR3_UINT32 ttype,
pANTLR3_BITSET_LIST follow)
{
    mismatch( recognizer, ttype, follow );
    return NULL;
}


And provide for us easy way to switch to it in the @parser::apifuncs

Then WE - users of ANTLR, will need just one line to switch.
This will be good yes?  :-)



> You need to copy the mismatch locally or call it via a pointer (if it is in
> the interface, but I think it is not).

> Jim



> *From:* Ruslan Zasukhin [mailto:ruslan_zasuk...@valentina-db.com]
> *Sent:* Thursday, October 20, 2011 2:30 PM
> *To:* Jim Idle
> *Subject:* [C target][HEELP :-] About disable recovery ... Override
> recoverFromMismatchedToken() ... Linker error
> 
> 
> 
> Hi Jim,
> 
> So it seems I have realize (like prev person who did ask same)
> That  this comment is out of date and  mismatchRecover()
> was renamed to recoverFromMismatchedToken()
> 
> -----------------------------------------------------------
> /// To turn off single token insertion or deletion error
> /// recovery, override mismatchRecover() and have it call
> /// plain mismatch(), which does not recover.  Then any error
> /// in a rule will cause an exception and immediate exit from
> /// rule.  Rule would recover by resynchronizing to the set of
> /// symbols that can follow rule ref.
> ///
> static void *
> match(    pANTLR3_BASE_RECOGNIZER recognizer,
>         ANTLR3_UINT32 ttype, pANTLR3_BITSET_LIST follow)
> -----------------------------------------------------------
> 
> 
> So I have try made this function as next:
> 
> void* recoverFromMismatchedToken_off(
>     pANTLR3_BASE_RECOGNIZER recognizer, ANTLR3_UINT32 ttype,
> pANTLR3_BITSET_LIST follow)
> {
>     mismatch( recognizer, ttype, follow );
>     return NULL;
> }
> 
> @parser::apifuncs
> {
>     // Install custom error message display
>     //
>     RECOGNIZER->displayRecognitionError = vdb_BuildRecognitionErrorStr;
>     RECOGNIZER->recoverFromMismatchedToken = recoverFromMismatchedToken_off;
> .......
> 
> 
> ==========================================
> *PROBLEM IS:
> *
> Method match() is declared as static  in the antlr3baserecognizer.c
> So linker of course give us error.
> 
> Then I wonder:
>     why comment says that we must call  mismatch() ?
>     how ??
> 
> 
> We should change sources of ANTLR3 ? I hope not.
> But so far I do not see other way ...
> Static method is static method ...
> 
> 

-- 
Best regards,

Ruslan Zasukhin
VP Engineering and New Technology
Paradigma Software, Inc

Valentina - Joining Worlds of Information
http://www.paradigmasoft.com

[I feel the need: the need for speed]



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 il-antlr-inter...@googlegroups.com.
To unsubscribe from this group, send email to 
il-antlr-interest+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/il-antlr-interest?hl=en.

Reply via email to