問題タブ [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 - Bison ルールの書き方は?
私はこのようなルールを持っています:
A --> a B C d
ここで、 a, d
は終端記号であり、B, C
は非終端記号です。
私はバイソンでこのルールを書いています:
このルールを次のように書きたいと思います。
しかし、バイソンでの書き方がわかりません。バイソンで書くのを手伝ってくれる人はいますか?(B と D の値を取得する方法がわかりません)
debugging - バイソン スタックのエマンティック値
これは Flex を使用した Lexical Analyzer です。
そして他のファイルはバイソン文法ファイルです
実際には、ファイルから値を取得したいと考えています。Bison Debugger を使用したところ、これらの値を Bison スタックにプッシュできないことがわかりました。したがって、基本的にはこれらの値をスタックにプッシュしたいと思います。私のファイルは次のようになります: POINT x=38 y=47
bison - バイソントークン値を取得する方法(セマンティック値ではありません)
トークンの価値を取り戻すことは可能ですか?
次のようなルールがあります。
NOT、PLUS、MINUS はトークンであり、生成された定義をプログラムでも使用しています。このデータを回復して、同じ行で自分自身を繰り返さないことは可能ですか?
私はセマンティック値に興味がないので、これを書くのは正しくありません:
ありがとうございました
c++ - bison (yacc.y ファイル) 内のユーザー クラスからポインターを宣言します。
私はPython構文のコンパイラプロジェクトに取り組んでいますが、継承やオブジェクト指向の概念などの新しい機能を追加しています..だから私は次のようなクラスを持っています:
そして、bison 内でクラス b からのポインターを宣言したいので、yacc grammer の前に次のように記述します。
しかし、実行するとこのエラーが表示されます:
エラー C2143: 構文エラー: ';' がありません 前 '*'
エラー C2838: 'b': メンバー宣言の修飾名が正しくありません
助けてください !
parsing - bison: 特定の数の再帰?
私はここ数週間、flex と bison を使用してパーサーを作成してきましたが、最初のいくつかのルールの定義が似ている二重再帰のために停止しました。Bison は、ある特定の段階で常に間違ったパスを選択し、文法が適合しないためにクラッシュします。バイソンのコードは次のようになります。
と
と
Bison は再帰にとどまりdescrs
、次の に進むために再帰を終了することはありませんalt
。ただし、最初のブロックで読み取られる整数は、 のインスタンスがdescr
いくつ来るかを示しています。だから私の質問はこれです:
バイソンがこの再帰を終了して「上」の再帰に入ることができるように、再帰の特定の数のインスタンスに対してバイソンを準備する方法はありますか? Cコードでこの整数にアクセスできますが、上記の移動の構文はわかりませんdescrs : {for (int i=0;i<n;++i){descr}}
(おそらくばかげているように見えることはわかっています)
これに失敗した場合、この問題を回避する他の方法はありますか?
任意の入力をいただければ幸いです。前もって感謝します。
compiler-construction - bisonc++ YYLTYPE のポジショニング メカニズムは常に 0 を返します
bisonc++ で文法を使ってソースファイルを解析しているときに、トークンの行番号を取得したいです。このために、有効にしまし%lsp-needed
た。とを使用して行番号にアクセスする@1.first_line
と@1.last_line
、トークンが 0 行目からのものでなくても、両方とも 0 が出力されます。