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:
>
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> - - - - - - - - - - - - - - - - - - - - - -
>
> _______________________________________________
> help-bison@gnu.org 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.
_______________________________________________
help-bison@gnu.org http://lists.gnu.org/mailman/listinfo/help-bison