[antlr-interest] [C] code to change Token type, use char* and loose data when buffer destroyed

Ruslan Zasukhin ruslan_zasukhin at valentina-db.com
Tue Sep 27 15:34:57 PDT 2011


On 9/28/11 12:46 AM, "Douglas Godfrey" <douglasgodfrey at gmail.com> wrote:

Hi Douglas,

Yes, I have thinked about this way also.

But in your solution you use helper functions as
    RemoveQuotePairs()

Which, I guess do some coping in additional ram buffers.
This is fine for Java guys, but in C code, as Jim likes underline each time,
we tend to use only pointers to input buffer, as long as possible.
 

> You need to modify your string lexing rules to use sub-rules for the
> elementary
> strings and return the concatenated string as the lexer token value.
> 
> The value of 
> 
> StringConstant: QuotedString
> {RemoveQuotePairs($QuotedString);};
> 
> fragment
> QuotedString:  ( StringTerm )+;
> 
> fragment
> StringTerm:  Dquote ( Character )* Dquote;
> 
> fragment
> Character: ( ' ' | AlphaChar | Punctuation | Digit );

-- 
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]




More information about the antlr-interest mailing list