1つの追加パラメーター(タイプのトークンマイナーではないYYSTYPE)をyypush_parse()関数に渡すにはどうすればよいですか?
パーサーは確かに再入可能ですが、この1つの追加変数は、パーサーを統合する必要があるアプリケーションのスレッドセーフにとって重要です(これはPHP拡張であるため、TSRMについて話します)。
アクションコード内で、ユーザーランドにアクセス可能な形式でASTを生成する関数を呼び出すため、このパラメーターを削除することはできません。
私はハックしようとしましYYPUSH_DECLSたが、関数の宣言に関する限り機能しますが、数千のLOCがの実装にyypush_parseなり、実装が開始される関数シグネチャを上書きする方法がわかりませんyypush_parse。
YYPARSE_PARAMパーサーがプッシュ型ではない場合にのみ使用されます(私が知る限り)が、私の場合は、処理ループで、字句解析後、新しいものを追加する前に行う必要があるため、プッシュする必要があります解析スタックへのトークン。
だから私は%directive何か助けになるかもしれないかどうか疑問に思っています。
YYPARSE_PARAM反対に、パーサーの種類に関係なく、定義されている範囲で使用する必要があると思います。そうではないのは残念です。