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