对于非确定性规则,有没有办法在应用其他规则之前对某些规则进行优先级排序,直到它们无法再应用?
例如在以下规则中(在伪代码中)
1. (S U {P | Q}) => (S U {P, Q}) [prioritise]
2. (S U {P + Q}) => (S U {P}) [transition]
3. (S U {P + Q}) => (S U {Q}) [transition]
其目的是在非确定性地应用规则 (2) 和 (3) 之前优先考虑非确定性结构规则,例如 (1)。即,如果允许负模式匹配,则仅适用 (2) 和 (3) 如果没有任何S
形式是P|Q
. 如果我没记错的话,我可以使用函数来达到类似的效果,但我想知道是否有更直接的方法。
此外,与上述规则有些相关,以下是查找表单多个元素的正确语法A + _
吗?
<myset> ... SetItem(A + B) SetItem(A + C)... </myset>
那么是否可以更新它们?
<myset> ... (SetItem(A + B)=>SetItem(B)) (SetItem(A + C)=>SetItem(C))... </myset>