いっぱいになって補充され続けるバッファに対してフレックスを使用しようとしています。
バッファの独自の独立したコピーで動作する複数のスレッドがあります。
疑似的には、私のメインプログラムでは次のようになります。
while(forever)
{
-fill buffer buf-
buf[length+1] = '\0';
buf[length+2] = '\0';
yy_scan_bytes(&buf, length+2);
yylex();
}
複数のスレッドがそのループを実行しており、すべてが buf のコピーを所有しています。
私の lex ファイルには、次のようなルールがあります。
<<EOF>> {yyterminate(); yy_delete_buffer(YY_CURRENT_BUFFER);}
バッファの実行後にクリーンアップを試みます。
フレックススキャナーを別のプログラムと組み合わせて使用するのはこれが初めての試みであるため、これが正しく行われているかどうかはわかりません。すべてのバッファ処理を flex 内で行い、それをメイン プログラムの extern 宣言にリンクしたほうがよいでしょうか?
ありがとう