1
我試圖用Beaver來解析包含reduce/reduce衝突的語法。預計衝突。其他解析器生成器支持說類似%expect 0 1
來指定預期會出現一個reduce/reduce衝突,但Beaver似乎不支持這種情況。我如何告訴海狸忽略已知的減少/減少衝突並生成解析器?如何告訴海狸忽略減少/減少衝突?
我試圖用Beaver來解析包含reduce/reduce衝突的語法。預計衝突。其他解析器生成器支持說類似%expect 0 1
來指定預期會出現一個reduce/reduce衝突,但Beaver似乎不支持這種情況。我如何告訴海狸忽略已知的減少/減少衝突並生成解析器?如何告訴海狸忽略減少/減少衝突?
Beaver can't do that,但您可以使用%left,%right或%nonassoc指令來定義關聯性和優先級規則。
我認爲你不在意在發生衝突時執行哪種reduce(或者因爲分析樹是相同的,或者因爲它們對於你的目的是相同的)。因此,您應該無所謂其中優先級您定義,只是您定義足夠優先。
假設衝突在操作員OP1和OP2之間,那麼以下指令將解決您的衝突。
%nonassoc OP1;
%nonassoc OP2;
然而,如果衝突是二扣規則之間使用相同的運營商(OP),那麼你需要或者
%left OP;
或
%right OP;