[antlr-interest] Overriding the emit function to use custom tokens

Jim Idle jimi at temporal-wave.com
Fri Jan 15 09:50:03 PST 2010


No, you have to override nextToken too it calls emit directly for performance reasons. 

However, no one really needs to do this. There is a user defined pointer built in to every token and a function pointer that is called when the token is released (if it is not NULL). So you can just add your custom token stuff there and rely on the default runtime.

Jim

> -----Original Message-----
> From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> bounces at antlr.org] On Behalf Of frogery at voila.fr
> Sent: Friday, January 15, 2010 5:53 AM
> To: antlr-interest at antlr.org
> Subject: [antlr-interest] Overriding the emit function to use custom
> tokens
> 
> Hello,
> 
> I wanted to create a custom token object, so I have seen in the FAQ
> that I had to "override" the lexer emit function. So I did that this
> way:
> 
> ...
>         pLexer = antlrLexerNew(pInput);
>         pLexer->pLexer->emit = customEmit;
> ...
> 
> but it was not working.
> 
> The customEmit function was never called. So I have debugged and I
> think there is a bug in antlr3lexer.c. In the nextTokenStr function,
> shouldn't "emit(lexer)" be replaced by "lexer->emit(lexer);"? What do
> you think?
> 
> Thanks,
> Yann
> 
> ____________________________________________________
> 
> Vous n’avez pas encore adressé vos voeux ? Retrouvez nos cartes sur
> http://carte-de-voeux.voila.fr
> 
> 
> ____________________________________________________
> 
> Vous n’avez pas encore adressé vos voeux ? Retrouvez nos cartes sur
> http://carte-de-voeux.voila.fr
> 
> 
> 
> 
> 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