私は現在 Decaf (プログラミング言語) 文法の一部を実装しています。関連するバイソンコードのスニペットは次のとおりです。
type:
INT
| ID
| type LS RS
;
local_var_decl:
type ID SEMICOLON
;
name:
THIS
| ID
| name DOT ID
| name LS expression RS
;
それにもかかわらず、名前生成ルールの作業を開始するとすぐに、私のパーサーはreduce-reduce警告を出します。
.outputファイル (bison によって生成)の内容は次のとおりです。
State 84
23 type: ID .
61 name: ID .
ID reduce using rule 23 (type)
LS reduce using rule 23 (type)
LS [reduce using rule 61 (name)]
$default reduce using rule 61 (name)
したがって、次の入力を与えると、{ abc[1] = abc; }
と表示されsyntax error, unexpected NUMBER, expected RS
ます。NUMBERは式ルール (基本的には、どのように解析されたに違いないか)から来ていますが、 local_var_declルールを通じて解析しようとします。
この問題を解決するには、何を変更する必要があると思いますか? 約 2 時間費やし、さまざまなことを試しましたが、うまくいきませんでした。
ありがとうございました!!
PS。完全な.yソース コードへのリンクは次のとおりです。