問題タブ [bisonc++]
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.
bison - インストールされている GNU Bison のバージョンを取得する方法
Bison 1.875 から Bison 3.0.4 にアップグレードしていますが、下位互換性を維持したいと考えています。
- 関数呼び出し
yyparse(void *)
は 1.875 では機能しますが、3.0.4 では機能しません - 関数呼び出し
yyparse()
は 3.04 では機能しますが、1.875 では機能しません
Bisonは、実際のバージョンが最新かどうかを判断し、使用する関数呼び出しを決定するため#define YYBISON_VERSION "3.0.2"
に使用した行を含む cpp ファイルを出力します。strcmp
しかし、ご覧のとおり、これは実行時に決定されるため、コンパイラは関数呼び出しに対して何もできないと文句を言います。
プリプロセッサ ディレクティブを使用して適切な関数呼び出しを選択できるように、使用できるマクロが必要です。バイソンのドキュメントでそのようなマクロを見つけることができません。
- 「__BISON_VERSION」そっくりマクロについて知っている人はいますか?
- バイソンバージョンに基づいて正しい関数呼び出しを行う別のアイデアを持っている人はいますか?
bison - バイソンによって自動生成されたファイル出力のreduceアクションの$defaultは誰ですか
誰かがその文を知っています:
誰が $default... 特定の端末である必要がありますが、どの端末ですか?
compiler-construction - 関数宣言と使用のための bison 文法の例
関数の宣言と関数の使用法に関するバイソン文法の例を誰かが挙げて、宣言と使用法の引数の数が異なる場合にパーサーがエラーを生成するようにすることはできますか?
c++ - バイソンで複数のコンポーネントを使用してルールをエレガントに処理する方法
以前は ocaml でプログラミングし、ocalmyacc を使用してパーサーを生成していました。ocaml の非常に便利なフェザーの 1 つは、次のようなバリアント型です。
このような型を使用すると、パーサーで AST データ構造を非常にエレガントに構築して、次のような exp を表すことができます。
では、C++ と bison に同様のメカニズムが存在する場合は?
parsing - flex と bison を使用してファイルを解析する際の構文エラー
次のファイルを解析しています。
私のフレックスとバイソンファイルは次のとおりです。
lexa.l
yacca.y
コンパイル手順:
実行時にsyntax error
near blockcontentsを与える
私が犯した間違いを特定するのを手伝ってください。
どうもありがとうございます。
bison - 警告: 割り当ては、キャストなしで整数からポインターを作成します yylval=atoi(yytext);
再入可能な lex と yacc を使用して単純な電卓アプリケーションを作成しようとしています。ここでは、入力ファイルで提供された入力を解析する必要がある 2 つのスレッド (パーサー) を作成します。入力ファイルで解析される行は、2 つのスレッドに分割されます。
簡単な電卓の私のlexコードは
単純な計算機(再入可能)用の私のyaccファイルは
私の入力ファイルは
このプログラムをコンパイルして実行すると、次の出力が得られます
gdb を使用してこのプログラムをデバッグすると、プログラムがシグナル SIGSEGV を受信したと表示されます。
このプログラムをデバッグする方法がわかりません。彼に関して助けていただければ幸いです。ありがとうございました