Numlex 文档
语法参考
反馈问题

运算符与逻辑

完整优先级、算术、比较、布尔逻辑(真实的短路规则),以及精确的按位规则。

Numlex 中的每个表达式都由同一套严格的运算符语法求值:算术与逻辑共用一条优先级阶梯, 布尔值是真正的类型(绝不强制转换为 1/0),按位运算则采用独立的精确规则。

本页是完整的运算符参考:从 if/then/else 到后缀运算符的优先级、每个运算符的含义、 语言究竟在何处短路(左值为假时的 &&——仅此一处),以及精确整数的优先级表、 受检移位和溢出行为。

优先级

从低到高:

if … then … else …     (right-associative)
or  /  ||
and /  &&
not /  !
==  !=
<  <=  >  >=
+  −                   (left)
*  ×  /  ÷             (left; `of` after a percent or multiplier is this level)
^                      (power, right)
unary + / −
primary                (literals, parentheses, calls, % and x postfixes)

运算符

运算符含义说明
+ −加 / 减加法语境中,右侧「纯」百分比是左侧累计值的一部分:100 + 10% = 110
* × / ÷乘 / 除200 × 10% = 20,200 / 10% = 2000
^乘方绝不是 XOR(XOR 是整数运算中的单词 xor)
%(后缀)p% = p/100加法语境中的语义「百分比」
x(后缀)1.5x = 倍数 1.5仅当没有活动变量 x 时才识别
of(中缀,* 级)15% of 490 = 73.5左侧必须是百分比或倍数(1.5x):1.5x of 20 = 30,链式 10% of 20% of 50 = 1;3 of 4 是错误。百分比行中 N% of E 的基数是行的其余部分:15% of 490 + 5 = 74.25
< <= > >=比较数值比较;结果是布尔值
== !=等于 / 不等于布尔结果
and &&合取&& 仅在左值为假时短路:false && (1/0 > 0) = false;true && … 和单词 and 总会求值右操作数
or ||析取不会短路:两个操作数都会求值——false or (1/0 > 0) 和 false || (1/0 > 0) 都是除以零错误
not !取反前缀
if a then b else c条件最低优先级;分支是完整表达式;else 必需

百分比和倍数形式的更多内容见百分比。

布尔值是真正的类型

true 和 false 绝不会被强制转换为 1/0。在同一个运算符中混用布尔值和数字是错误。

符号与单词

  • 符号 & 和 | 始终是按位的:用于布尔操作数时是错误 (false | (1/0 > 0) → “Invalid expression”)。
  • 只有单词 and/or 是上下文的:两个整数使它们按位,两个布尔值使它们逻辑。

精确整数与按位运算符

精确整数模式由以下方式启用:

  • 强激活: 字面量 0x… / 0b… / 0o…、调用 int( bin( oct( hex(、 短语 … as|in <base> / … to base N、按位符号 & | << >> 以及单词 xor。 符号只在行含数学内容时计数——fish & chips 仍然是普通文本。
  • 弱激活: 仅当两侧都是整数时的单词 and/or。

精确整数优先级,从低到高:

if/then/else  →  ||  →  &&  →  | / or  →  xor  →  & / and
→  comparisons == != < <= > >=  →  shifts << >>  →  + -  →  * / %  →  ^
→  unary  →  primaries
运算符含义说明
&按位与
|按位或符号始终按位:布尔操作数是错误(false | (1/0 > 0))
xor按位异或(单词)6 xor 3 = 5
<<左移移位 0…63;溢出是错误
>>右移移位 0…63;对负数采用算术移位
/整数除法有余数时结果为十进制数
%取余
^乘方指数受检;负指数产生十进制数

这里的所有值都是精确整数:0x7FFFFFFFFFFFFFFF = 9223372036854775807。溢出是可见 错误——绝不是回绕,也绝不是静默舍入的数。带余数的除法、负指数和非整数值都会「超出」 精确整数范围,因此请在边界使用显式括号。

字面量形式和进制名称见数字与进制。

相关

  • 数字与进制——十六进制/二进制/八进制字面量和短语。
  • 内置函数——pow 与 ^ 共用约定。
  • 百分比——建立在这些运算符之上的严格短语模式。

发现文档有问题? 在 GitHub 上反馈