help-bison
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: yy_scan_string


From: never2di
Subject: Re: yy_scan_string
Date: Wed, 14 Oct 2009 14:56:06 -0700 (PDT)



Luca-63 wrote:
> 
> never2di ha scritto:
>> I'm a newbie to Bison + Flex. and I'm having trouble in getting
>> yy_scan_string to work. I have tried the following
>>
>> YY_BUFFER_STATE my_string_buffer = yy_scan_string(my_string);
>> yyparse();
>> yy_delete_buffer(my_string_buffer );
>>
>> the parser errors out with a syntax error at the first token. I have
>> verified that the grammar and the content of 'my_string' works using
>> yyrestart(yyin) and also with yy_create_buffer() through a file.
>>
>> Is there something special state that I have to set flex in before I call
>> yyparse()? 
>> if not what is that I'm doing wrong and what needs to be done?
>>
>> bison (GNU Bison) 2.4  
>>
>> Thanks :handshake:
>>
>>
>>
>>   
>        
> 
> The problem concerns Flex and not Bison.
> I anyway think you're right, you have to call yy_switch_to_buffer;
> the following code should be right:
> 
> YY_BUFFER_STATE b=yy_scan_string(my_string);
> yy_switch_to_buffer(b);       //buffer change
> yyparse();   
> yylex_destroy();             //to avoid leakage
> 
> You can read how "Multiple Input Buffers" works in flex help:
> http://flex.sourceforge.net/manual/Multiple-Input-Buffers.html#Multiple-Input-Buffers
> 
> Luca
> 
> 
> The documentation says that there is no need to call yy_switch_to_buffer
> after calling yy_scan_string.
> below is the exact text from the link the Luca sent.  But any way it still
> doesn't work for me. 
> 
> I have also tried to set BEGIN(0)before and after yy_scan_string, not sure
> what that does though.
> 
> any help is greatly appreciated, and thanks for you time.
> 
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> - - - - - - - - - - - - - - - - - - - - 
> 
> The following routines are available for setting up input buffers for
> scanning in-memory strings instead of files. All of them create a new
> input buffer for scanning the string, and return a corresponding
> YY_BUFFER_STATE handle (which you should delete with yy_delete_buffer()
> when done with it). They also switch to the new buffer using
> yy_switch_to_buffer(), so the next call to yylex() will start scanning the
> string.
> 
> — Function: YY_BUFFER_STATE yy_scan_string ( const char *str )
> 
> scans a NUL-terminated string. 
> 
> — Function: YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len )
> 
> scans len bytes (including possibly NULs) starting at location bytes. 
> 
> Note that both of these functions create and scan a copy of the string or
> bytes. (This may be desirable, since yylex() modifies the contents of the
> buffer it is scanning.) You can avoid the copy by using: 
> 
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> - - - - - - - - - - - - - - - - - - - - - - 
> 
> _______________________________________________
> address@hidden http://lists.gnu.org/mailman/listinfo/help-bison
> 
> 

-- 
View this message in context: 
http://www.nabble.com/yy_scan_string-tp25887754p25899775.html
Sent from the Gnu - Bison - Help mailing list archive at Nabble.com.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]