問題タブ [bison]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Bison は UTF-8 文字を解析できますか?
UTF-8 文字を処理する Bison パーサーを作成しようとしています。パーサーに Unicode 文字の値を実際に解釈させたくはありませんが、UTF-8 文字列を一連のバイトとして解析させたいと考えています。
現在、Bison は問題のある次のコードを生成します。
問題は、UTF-8 文字列の多くのバイトが負の値を持つことであり、Bison は負の値を EOF として解釈し、停止します。
これを回避する方法はありますか?
bison - PHP 内の Flex/Bison ライクな機能
PHP で Flex/Bison (または Lex/Yacc など) をサポートする方法を探しています。具体的には、Web UI にブール値クエリ パーサーを実装しており、(C パーサーを呼び出したり、Python に渡したりするのではなく) すべての操作を PHP 内に保持したいと考えています。
bison - Bison の警告「... 宣言された型がありません」の解決方法
このファイルで Bison を実行します。
次のような警告が表示されます。
警告: 'exp' の $$ には宣言された型がありません。
それはどういう意味ですか、どうすれば解決できますか?
search - フレックスとバイソンの結合の難しさ
FlexとBisonを使用して、論理「and」、「or」、「not」操作、および「()」を使用したネストされた部分式をサポートするブールクエリ言語の文法仕様があります。
「(A&B)|(C&D)」として解析したい「AとBまたはCとD」のようなクエリが実際には「A&(B |( CD ) )"。これは結合性の問題であるとほぼ確信していますが、適切な説明や例をどこにも見つけることができないようです。それか、重要な何かが欠けています。
boolpars.yからの関連情報:
誰かが欠陥を見つけることができますか?バイソンが「または」適切な優先順位を与えていない理由がわかりません。
c++ - yyparse は先頭のタブを印刷しています
私の bison/flex プログラムでは、yyparse() が呼び出された直後に先頭のタブが出力されますが、その理由はわかりません。何が悪いのか分かりますか?
これは bison コードを呼び出し、yyparse() が戻った直後にタブが出力されます。
私のバイソン ルールはすべて、return ステートメントと組み合わせた正規表現です。これに影響を与えることがわかった bison の唯一の興味深いコードは次のとおりです。
何人かからの提案を試してみましたが、まだうまくいきません。ここに私の完全なフレックスファイルがあります:
}
string - Flex はバイソンに一致する文字列を返すことができますか
LaTeX を MathML に変換する Bison/Flex プログラムを作成しています。現時点では、関数 (つまり、\sqrt、\frac など) の処理は、すべての関数のトークンを使用して、次のように機能します。
そして、トークン FUNC_FRAC を bison に渡します。bison は、このサブツリーの説明でその役割を果たします。
しかし、これは、潜在的に無制限の数のトークンを定義してジャグリングする必要があることを意味します。私がやりたいのは、このようなもので、書かれているようには機能しません。フレックス:
そしてバイソンで:
bison - Windows で flex を使用するにはどうすればよいですか?
Windows でプロジェクトをコンパイルしようとしていますが、flex/bison を使用しています。
MinGWをインストールした後、flexファイルとbisonファイルのコンパイルはうまくいきましたが、ビルドの最終ステップに到達すると、次のようになります。
ライブラリが見つからないと表示されます。
Googleでしばらくして、フラグを-llibfl.aに変更しようとしましたが、このライブラリも見つかりませんでした。
このライブラリのコピーを入手したり、自分でビルドしたりするにはどうすればよいですか?
c - トークンのセマンティック値 (シンボル レコード) を正しく破壊し、GNU Bison を使用してメモリ リークを回避する方法は?
私は単純化された Pascal パーサー/インタープリターを書いていますが、今はセグメンテーション違反について考えています。まだ取得していません。すべて正常に動作していますが、Cygwin で開発しているため、valgrind を使用してプログラムをテストすることはできません。
基本的に私がやっていることは以下のとおりです。
もちろん、トークンは正しく入力されています。問題は、たとえば、いくつかの式を否定する場合です。通常、新しいものを malloc する代わりに、いくつかの symrec * を再利用します。
例:
もちろん、これは私のコンテキストでは有効ではありません (データ型として int または double を考慮した例では)、symrec * を適切に解析していますが、このシナリオでは、デストラクタは $2 を解放せず、$$ をそのままにします。ある種のダングリングポインター?
これを書いている時点で、これが実際に起こってセグメンテーション違反が発生した場合は、$2 = NULL; を作成するだけでよいと考えています。%destructor{} 句でそれを確認しますか?
PS: 私は英語のネイティブ スピーカーではなく、これをかなり長く作成したため、混乱したアイデアについてはご容赦ください。すぐに再説明します。
parsing - Lex / Flex での状態の開始
パーサー ジェネレーターに Flex と Bison を使用していますが、スキャナーの開始状態に問題があります。
コメントを処理するために排他的なルールを使用していますが、この文法は引用されたトークンと一致しないようです:
この簡単な例では、次の行:
次のルールを含めない限り、コメントとして完全に一致するわけではありません。
これらすべてのトークンを排他的ルールに追加することなく、これを回避するにはどうすればよいですか?