Nul*_*Set 4 parsing operator-precedence
我正在编写一个小型解析器,它将具有一个OR运算符和一个AND运算符。当您看到一系列“或”和“与”时,您期望哪个更具约束力?鉴于表达a & b | c,你能指望它的意思(a&b)|c还是a&(b|c)?您能给出什么理由比另一种偏爱吗?
做其他人做的事;AND绑定比OR绑定更紧密(请参见例如C运算符优先级表)。这是每个人都期望的惯例,因此请采用最少惊讶的原则。
这个选择不是任意的。它源于以下事实:“与”和“或”遵循相似的关系分别分别进行相乘和相加。参见例如http://en.wikipedia.org/wiki/Boolean_logic#Other_notations。
另请注意,应大力鼓励您的语言的用户使用括号,以使其意图清晰地传达给代码阅读者。但这取决于他们!