如何告诉Beaver忽略减少/减少冲突?

时间:2013-02-18 22:34:03

标签: java beaver

我正在尝试使用Beaver来解析包含reduce / reduce冲突的语法。预计会发生冲突。其他解析器生成器支持说%expect 0 1之类的东西,以指定一个减少/减少冲突,但Beaver似乎不支持这一点。如何告诉Beaver忽略已知的减少/减少冲突并生成解析器?

1 个答案:

答案 0 :(得分:2)

Beaver can't do that,但您可以使用%left,%right或%nonassoc指令来定义关联性和优先级规则。

我假设您不关心在发生冲突时执行哪种减少(因为解析树是相同的,或者因为它们对于您的目的是相同的)。因此,您定义哪个优先级并不重要,只需定义足够的优先级。

假设操作员OP1和OP2之间存在冲突,则以下指令将解决您的冲突。

%nonassoc OP1;
%nonassoc OP2;

但是,如果冲突在两个具有相同运算符(OP)的演绎规则之间,那么您需要

%left OP;

%right OP;