跳到正文豫言技术文档

豫言 / 技术规范

本篇描述 4cdeca1 的实现。版本与适用边界见基线说明。

操作符规约关系表

查表之前,带标签的调用 〇于〇曰〇 按 〇于〇、第二个起的类型实参 〇又以〇 按 〇以〇、以“者也”收尾的签名 〇乃〇者也 与构造器 〇立〇者也 按 〇乃〇也、〇立〇也 查找;左右两侧都作此映射。

按源码次序逐条匹配,第一条命中生效;* 匹配任意完整操作符名,〇 为表达式槽。表中没有的组合按文末的后备规则决定。

卦曰〇(提案 00030)比所有中缀都紧:它作左操作符时对任何右操作符都左规约(第 1 条),所以 卦曰「名」 可以直接作调用的实参、列表的项;它出现在右边时是前缀,直接移入栈。

〇且〇、〇或〇 是短路的爻运算(提案 00022),只与彼此有关系:或 比 且 松,同级右结合;与其他中缀操作符混写须加括号,否则报“未定义优先级关系”。〇或有〇则〇 是 鉴 的后续分支:遇到它时前一分支体一律先收束,只有 鉴〇而〇 右规约,内层 鉴 照旧收下其后的分支;它的分支体向右延伸到下一个 或有、也、, 或右括号。

序 左操作符 右操作符 决定
1 卦曰〇 * 左规约
2 〇,〇 〇,〇 右规约
3 〇,〇 * 右规约
4 * 〇,〇 左规约
5 〇【〇】 * 左规约
6 〇【】 * 左规约
7 〇【〇,】 * 左规约
8 * 〇【〇】 右规约
9 * 〇【】 右规约
10 * 〇【〇,】 右规约
11 〇且〇 〇且〇 右规约
12 〇且〇 〇或〇 左规约
13 〇或〇 〇且〇 右规约
14 鉴〇而〇 〇或有〇则〇 右规约
15 * 〇或有〇则〇 左规约
16 〇或有〇则〇 * 右为语句级中缀时左规约,否则右规约
17 〇于〇 〇于〇 左规约
18 〇之〇 〇之〇 左规约
19 〇之〇 〇于〇 左规约
20 〇于〇 〇之〇 右规约
21 〇之〇 〇接〇 左规约
22 〇接〇 〇之〇 右规约
23 〇之〇 〇而后〇 左规约
24 〇而后〇 〇之〇 右规约
25 〇之〇 〇以〇 左规约
26 〇中〇 〇中〇 左规约
27 〇以〇 〇以〇 左规约
28 〇以〇 〇于〇 左规约
29 〇于〇 〇而后〇 左规约
30 〇而后〇 〇而后〇 右规约
31 〇而后〇 〇于〇 右规约
32 〇属〇 〇于〇 右规约
33 〇属〇 〇之〇 右规约
34 〇属〇 〇以〇 右规约
35 〇属〇 〇合〇 右规约
36 〇属〇 〇中〇 右规约
37 〇合〇 〇于〇 右规约
38 〇接〇 〇接〇 右规约
39 〇与〇 〇与〇 右规约
40 〇合〇 〇合〇 右规约
41 〇或〇 〇或〇 右规约
42 〇于〇 〇接〇 右规约
43 〇接〇 〇于〇 左规约
44 〇于〇 〇与〇 左规约
45 〇与〇 〇于〇 右规约
46 〇中〇 〇于〇 左规约
47 〇于〇 〇中〇 右规约
48 〇中〇 〇与〇 左规约

表中没有的组合依次按下列后备规则决定:

  1. 右边是语句级中缀(〇者〇也、〇即〇也、〇乃〇也、〇立〇也)而左边不是:左规约,语句级中缀最后收束。
  2. 右边是类型标注 〇属〇,左边是别的中缀:左规约,标注管住它左边的整个式子。
  3. 右边是 〇而后〇、左边是中缀:左规约;左边是 〇而后〇、右边是中缀:右规约。而后 最松,同级右结合。
  4. 算术与比较的中缀(加、减、乘、除以、大于、小于、等于、不等于)与 〇之〇、〇中〇 相遇时,之、中 先规约。
  5. 非〇 后面直接接算术比较中缀或 于、以、与、合、接、且、或、而后 时没有关系,须加括号。
  6. 左边是前缀写法(不以 〇 开头)、右边是中缀:右规约。
  7. 其余组合没有关系,报“未定义优先级关系”。

本表从 雅言符集。豫 的「雅言规约关系」提取。