help-bison
[Top][All Lists]
Advanced

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

RE: Reparsing error


From: Anouar LACHHEB
Subject: RE: Reparsing error
Date: Thu, 7 Sep 2006 17:04:19 +0200

Hi Steffen,

I faced recently the same problem when calling yyparse several times and I
found a solution for. But if you refer to the Bison doc (Bison v 1.2),
exactly at § "11.2 How Can I Reset the Parser", you'll see that the problem
comes with the scanner buffer initialization not the parser.

The solution is to flush scanner buffer after changing yyin and before
calling yyparse by writing a perso proc in flex source code (after %%):

...
%%
//lexems/tokens specification
%%
void PROC_FLUSH_BUF ( FILE * xFile )
{
        yy_delete_buffer ( YY_CURRENT_BUFFER );
        yy_switch_to_buffer ( yy_create_buffer ( xFile, YY_BUF_SIZE ) );
}

Then when calling yyparse in your ".c" prog file you should do this:

yyin = fopen ( File_Name, "r" );
// test yyin if NULL
(void) PROC_FLUSH_BUF ( yt_unique_datalog_in );
Ret = yyparse ( ... );
...
// test on "Ret".
...

Best regards,
AnL.

-----Original Message-----
From: address@hidden [
<mailto:address@hidden>
mailto:address@hidden On Behalf Of
Steffen Köhler
Sent: Thursday, September 07, 2006 4:48 PM
To: address@hidden
Subject: Reparsing error


Hello,

how can I clear the parser stack? I call yyparse() twice with the same
input and get different error messages.
I looks that the parser stack is not initialized in yyparse(), the
lexer  reads the correct tokens.

Thanks
Steffen



_______________________________________________
address@hidden  <http://lists.gnu.org/mailman/listinfo/help-bison>
http://lists.gnu.org/mailman/listinfo/help-bison



reply via email to

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