問題タブ [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++ - flex /yaccを使用してC++コンパイラを作成するにはどのくらいの時間がかかりますか?
lex /yaccを使用してC++コンパイラを作成するにはどのくらいの時間がかかりますか?
どこから始めればよいですか?
compiler-construction - バイソンでifステートメントを解析する方法
bison を使用して単純な言語のコンパイラを構築しています。文法の一部を次に示します。
この if ステートメントの解析で問題が発生しました: 次のコードがあるとします:
stmt->PRINT は stmt-> IF (exp) stmt の前に解析されるため、「hi」は出力されます。私に何ができる?(私はバイソンとコンパイルが初めてなので、質問のエラーを自由に修正してください)。
user-interface - コンパイラ用の GUI を作成する方法は?
私はflexを字句アナライザーとして、bisonをパーサージェネレーターとして使用していますが、両方の結果はコンソールウィンドウであり、そのためのGUI(ideなど)が必要なので、それを行う方法. ありがとう
c - Bison で n < 0 に $n を使用する
Bison で現在のトークン スタック サイズを確認する方法はありますか?
別のルールのセマンティック値にアクセスするために、 nを負の数として$nを使用したいと思いますが、スタックが十分に大きい場合に限ります。
ありがとうございました。
bison - バイソンの下でのCのような文法との競合をシフト/削減
私は個人的な娯楽のためにCのような文法に取り組んできました。しかし、私はシフト/削減の競合に遭遇しており、それらは解決できると確信しています。
今のところ、私のexpressions
見た目は、簡略化された形式で、アクションが取り除かれています。
ただし、これにより、shift / reduceの競合が発生します。パーサーは、括弧の処理方法について確信が持てません。私の言うことから-v
、のような表現が括弧にexpr '+' expr '('
還元expr '+' expr
されるべきか、expr
それともシフトされるべきかは不明です。
もちろん、かっこをずらして欲しいです。foo % bar(4)
で終わるべきではありません(foo % bar)(4)
。しかし、私は%prec
その意味のディレクティブを使用して成功していません。ルールを追加%left FUNCALL
したり%prec FUNCALL
、ルールを追加したりしても、変更はありません。
シフト/リデュースに遭遇したときにBisonのLALRパーサーが進むデフォルトのパスはシフトであり、問題%expect
を回避するために使用できることを私は知っています。ただし、式ごとに1つの競合が生成され、そのリストを変更する必要がある場合は、宣言も変更する必要があります。これは、私にはかなり醜い解決策のように見えます。その上、あなたの賢い子供たちの一人がその問題の解決策を持っていると確信しています。%expect
私の目標は、上記のルールと同様のルールを作成することです。Bisonは'('
、関数呼び出しルールからfromに遭遇するたびに、shift / reduceの競合なしに、括弧をシフトしていることを認識します。ちなみに、ディレクティブの使用法は%prec
次のとおりです。間違っている場合は、修正できます。シフト/削減の競合があります。
parsing - Bisonにreduce-reduce競合も期待していることをどのように伝えることができますか?
私のC#風のおもちゃの文法には、最初のreduce-reduceの競合があります。私は私をとても誇りに思っています。
しかし、それは私には大丈夫のようです(私はその機会にGLRパーサーに切り替えました)。問題は、%expect
ディレクティブがシフト/リデュースの競合についてバイソンをシャットダウンできることは知っていますが、リデュース/リデュースの競合に相当するものが見つからないことです。では、3つのシフト/リデュースと2つのリデュース/リデュースについて沈黙させるには何を使用すればよいですか?
bison - フレックスとバイソンの実際の例はどこにありますか?
flex と bison の例が必要なので、ast ツリーとシンボル テーブルを構築し、意味解析を行う方法を学ぶことができます。
c++ - Cヘッダーファイルで定義されたトークン列挙リストを自動的に使用するバイソンファイルを作成する方法は?
別のモジュールによって行われたトークンのフローを解析できるように、Bison/Yacc を使用してパーサーを構築しようとしています。トークンは、次のように列挙型に既にリストされています。
bison のドキュメントを何度も読みましたが、次のように Bison ファイル内の各トークンをコピーするよりも良い解決策を見つけることができませんでした。
そうしなければならない場合、他のモジュールの仕様が変更されると、ファイルを維持するのがかなり難しくなります(これはかなり頻繁に発生します)。
方法を教えてください。または、良い方向に向けてください (アイデアやコメントは大歓迎です)。それは私を大いに助けるでしょう!前もって感謝します。
c - Lex / Yacc解析でエラーをキャッチするための経験則はありますか?
汎用言語をできるだけ早く(Lexで)解析しているときにエラーをキャッチする必要がありますか、それともより便利な場所で(Yaccで)より多くの情報を提供する必要がありますか?さまざまな言語がこの問題をどのように解決しますか?
qt - qtの使用:コンソールアプリケーションの上にGUIを構築する方法は?
bison(パーサー)から生成されたコンソールアプリケーションがあり、そのための単純なGUIを作成して、このGUIからコンソールに入力を送信し、コンソールからGUIに出力を取得できるようにします。Javaプロセスクラスを使用してそれを実行しようとしましたが、機能しません。qtを使用して実行するのを手伝ってください。