問題タブ [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.

0 投票する
1 に答える
151 参照

parsing - decaf の解析に関する問題 (変数宣言とコンストラクター)

私は bison (3.0.4) と lexer を使用して Decaf プログラミング言語の (部分的な) 文法を実装しています。クラス内にあるものだけを実装しています。

したがって、私のタスクは単純です。すべてのプロダクション ルールを (文字列として) ツリーに格納し、それを出力するだけです。

たとえば、入力として次のコード行があるとします。

class Foo { Foo(int arg1) { some2 a; } }

次の出力を取得する必要があります

最初の問題 (解決済み) は、コンストラクター宣言ではなく変数宣言を解析したことでしたが、クラス自体のスコープには変数宣言がありません (つまり、コンストラクターのブロック内にしかありません)。これで解決です。

それにもかかわらず、次のようclass abc { some1 abc; john doe; }にすると、syntax error, unexpected SEMICOLON, expecting LP. したがって、19 行目の文字が問題を引き起こします。

これが.yファイルです(classBodyルールのみ)

完全な.yファイルの要点は次のとおりです。

0 投票する
1 に答える
47 参照

parsing - 次の reduce-reduce エラーを解決できません (LALR 解析)

私は現在 Decaf (プログラミング言語) 文法の一部を実装しています。関連するバイソンコードのスニペットは次のとおりです。

それにもかかわらず、名前生成ルールの作業を開始するとすぐに、私のパーサーはreduce-reduce警告を出します。

.outputファイル (bison によって生成)の内容は次のとおりです。

したがって、次の入力を与えると、{ abc[1] = abc; }と表示されsyntax error, unexpected NUMBER, expected RSます。NUMBERはルール (基本的には、どのように解析されたに違いないか)から来ていますが、 local_var_declルールを通じて解析しようとします。

この問題を解決するには、何を変更する必要があると思いますか? 約 2 時間費やし、さまざまなことを試しましたが、うまくいきませんでした。

ありがとうございました!!

PS。完全な.yソース コードへのリンクは次のとおりです。