合取表达式
语法
conjunct = disjunct ("AND" conjunct / .empty);
disjunct = negation ("OR" negation / .empty);
negation = "NOT" relation / relation;
relation =
'( conjunct ') /
sum (
"<=" sum /
">=" sum /
'< sum /
'> sum /
'= sum /
'" sum /
.empty);
conjunct 构造的设计方式是,不是 sum 的 conjunct 无需具有值,并且可以在代码中使用跳转来求值。对 conjunct 的引用只出现在需要作出逻辑判断的地方(例如 if 和 while 语句)。
我们希望大多数编译器都足够聪明,能在运行时跳过不必要的求值。也就是说,左半部分为假的 conjunct,或左半部分为真的 disjunct,无需对其对应的右半部分求值。