【发布时间】:2013-12-07 12:03:10
【问题描述】:
我正在用 Javascript 编写一个用于布尔逻辑的调车场算法,但我遇到了操作顺序的障碍。我允许的操作是:
and, or, implies, equals(biconditional), not, xor, nor, nand
但是,我不知道这些的优先级是什么。到目前为止,我有:
not>equals>implies>xor>nor>nand>or>and
这是正确的吗?有没有我可以使用的标准,类似于 PEMDAS/BODMAS 系统的数字?
【问题讨论】:
-
通过 Coq 证明助手,不 > 等于 > xor > and > and > or > 暗示
-
C 标准使用 NOT > EQUALS > AND > XOR > OR。为了使优先级解析工作,一元运算符应该比所有二元运算符具有更高的优先级。 AND 通常被认为比 OR 绑定更紧密,允许以没有括号的规范析取形式实现表达式:
( A && B || C && D )。 -
既然你喜欢Shunting Yard算法,你可能也会喜欢precedence climbing。
标签: javascript boolean logic operator-precedence