我目前正在實施Decaf(編程語言)語法的一部分。這裏是野牛代碼中的相關片段:無法解決以下reduce-reduce錯誤(LALR解析)
type:
INT
| ID
| type LS RS
;
local_var_decl:
type ID SEMICOLON
;
name:
THIS
| ID
| name DOT ID
| name LS expression RS
;
然而,當我開始名產生式規則的工作,我的解析器給出了減少,減少警告。
這裏什麼它是.OUTPUT文件(野牛生成)內:
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。這裏是link到完整.y源代碼
感謝您的幫助!這工作完美。 – oneturkmen