[antlr-interest] How to get tokens to come out as (char *) types
Sunil Sawkar
ssawkar at aehr.com
Thu Oct 14 12:21:57 PDT 2010
Jim,
Thanks a lot for the advice and quick response.
-Sunil S
On Thursday, October 14, 2010 11:58:07 am Jim Idle wrote:
> Don't do this. You will create lots of ANTLR strings that you don't need.
>
> Instead, when you want to use the text of the token, use the pointers in
> the token (start and end not start and length) and the knowledge of the
> input encoding and create the Cstring directly. The $text is just a
> convenience method in the C target - you should use your own methods when
> doing something non-trivial.
>
> Also, remember to only call external Helper methods from your parsers/tree
> walkers. Do not embedded any code other than the calling code and pass the
> whole tree or token pointer. This means your calls won't care what gets
> done by the helper API and the helper API will not care how the parsers
> decided to call it. Anything else is an unmaintainable mess.
>
> Jim
>
> > -----Original Message-----
> > From: antlr-interest-bounces at antlr.org [mailto:antlr-interest-
> > bounces at antlr.org] On Behalf Of Sunil Sawkar
> > Sent: Thursday, October 14, 2010 11:15 AM
> > To: antlr-interest at antlr.org
> > Subject: [antlr-interest] How to get tokens to come out as (char *) types
> >
> > Hi,
> >
> > I am using the following options for my grammar:
> >
> > options {
> >
> > language=C;
> > output = AST;
> > backtrack = true;
> >
> > }
> >
> > I would like to use TokenLabelType option to get all my tokens to come
>
> out
>
> > as (char *) type to be easily manipulated in "string" class. For now I am
> > using this cast, for example: (char *)$ID.text->chars.
> >
> > I don't understand the usage TokenLabelType=MyToken; suggested in the
> > Definitive ANTLR reference.
> >
> > Can anyone suggest a solution to avoid casts in hundreds of places ?
> >
> > Appreciate the help..
> >
> > -Sunil S
> > (New to ANTLR)
> >
> > 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