問題タブ [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.
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ファイルの要点は次のとおりです。
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ソース コードへのリンクは次のとおりです。