0
衝突。當我試圖編譯使用檸檬,我遇到衝突這個簡單的解析器,但我不能看到哪個規則是錯誤的。如果我刪除二進制表達式或callexpression,則衝突消失。移位/減少與表達通話
%left Add.
program ::= expression.
expression ::= binaryexpression.
expression ::= callexpression.
binaryexpression ::= expression Add expression.
callexpression ::= expression arguments.
arguments ::= LParenthesis argumentlist RParenthesis.
arguments ::= LParenthesis RParenthesis.
argumentlist ::= expression argumentlist.
argumentlist ::= expression.
[編輯]將左側關聯到LParenthesis已經解決了這個矛盾。然而,我很想知道這是否是正確的做法:我已經看到一些語法(fe C++)對於構造運算符'()'和調用運算符'()'具有不同的優先級。 。所以我不確定要做什麼。
您的語法是否完整?因爲目前它定義了空的語言。 – MvG 2012-07-20 12:56:22