1
我試圖通過定義一個非關聯優先執行一些解析錯誤。 這是我的語法文件的一部分:野牛nonassociative優先規則
Comparison :
Value ComparisonOp Value
{
$2->Left($1);
$2->Right($3);
$$ = $2;
}
;
表達式等1 = 2應該解析,但這樣的表達式1 = 2 = 3未在語法允許的。爲了適應這一點,我試圖讓我的運營商非關聯如下:
%nonassoc NONASSOCIATIVE
.
.(rest of the grammar)
.
Comparison :
Value ComparisonOp Value %prec NONASSOCIATIVE
{
$2->Left($1);
$2->Right($3);
$$ = $2;
}
;
1 = 2 = 3仍通過,可能有人請告訴我,我做錯了什麼?
ComparisonOp是一種規則,即擴展到令牌EQ,NEQ,我嘗試添加這些優先級規則令牌,但顯然優先級不會傳播到父規則 – stopBugs
您需要在規則和令牌上正確設置優先級 - 野牛優先級解決方案通過比較要降低的規則的優先級和令牌的優先級移動。如果您只設置一個或另一個,則不會發生任何事情。 –
我已經完成了這兩項工作,但仍然無效。這裏巧妙的是,在價值規則中我有 – stopBugs