1

複数のストリームに適用する単一の Bison パーサー定義があります。各ストリームは特定の間隔でチャンクで生成されるため、各解析インスタンスの状態 (関連するスタックを含む) を維持しながら、異なるストリーム間で切り替えるために、特定の解析インスタンスの状態を保存したいと考えています。

スキャナーから複数のバッファーを切り替える可能性があることは知っていますが、これは、分析しているストリームごとに異なる解析ツリーを構築するのに役立ちません。

で行う機能を実行できる Bison 機能はありますyy_switch_to_buffer()flex?

4

1 に答える 1

2

個別のパーサー状態を維持できる純粋な (再入可能) パーサー インターフェイスを探していると思います。また、各パーサー状態が独自のレクサー状態を持つように、再入可能な flex lexerも使用することをお勧めします。(単一のレクサーを使用して、呼び出すたびにバッファーを切り替えることもできますが、再入可能なレクサー インターフェイスは、開始条件やバッファー スタックなど、すべてのレクサーの状態を保持するため、よりクリーンで、より一般的です。)

于 2013-06-12T18:50:46.190 に答える