🐛 fix(tsl-syntax): remove body routing instructions

This commit is contained in:
csh
2026-07-13 09:16:53 +08:00
parent b4d2fc8246
commit 617275e92d
22 changed files with 84 additions and 74 deletions
@@ -14,9 +14,9 @@
## 智能体表达式/运算符判断流程
1. 先判断要写基础表达式运算符,还是集合、矩阵、对象重载、运行时调用或 TS-SQL 这类专题运算符。
2. 普通变量赋值只能用 `:=`,不要把 `=` 当赋值写法;`const name = value;` 是常量初始化规则,回看 [04_variables_and_constants.md](04_variables_and_constants.md)。
2. 普通变量赋值只能用 `:=`,不要把 `=` 当赋值写法;`const name = value;` 是常量初始化规则,相关事实见 [04_variables_and_constants.md](04_variables_and_constants.md)。
3. 在普通表达式里,比较才用 `=`,并且把比较表达式放在 `writeLn(...)`、条件或其他需要布尔值的位置。
4. 函数签名里的默认参数 `name = value` 不是比较表达式;默认参数规则 [05_functions_and_calls.md](05_functions_and_calls.md)。
4. 函数签名里的默认参数 `name = value` 不是比较表达式;默认参数规则 [05_functions_and_calls.md](05_functions_and_calls.md)。
5. 普通算术优先使用 `+``-``*``/``%`;左除用 `\`;整数除法和取模可用 `div``mod`;幂运算用 `^`;对数用 `~`;一元倒数用 `!x`
6. 逻辑表达式优先使用 `and``or``not``&&``||``.&&``.||``.!!` 也已可用,但默认不作为主写法;不要把 `!` 写成逻辑非。
7. 位运算使用点前缀或移位关键字:`.&``.|``.!``.^``shl``shr``rol``ror`;普通 `&``|``~` 不按位运算理解。
@@ -25,9 +25,9 @@
10. 需要延迟求值或动态表达式对象时,才使用 `@expr``&"..."`,并用本页明确的 `eval(...)` 形态求值。
11. 空安全访问只照本页文档明确形态写:`a?.member``a?.[index]`、以及 `c?.a?.[1]`。不要外推成任意深度、任意组合都可写。
12. 需要连续比较时,标量用 `:<` / `:>` 这组链式比较;数组逐元素比较用 `::<` / `::>` 这组矩阵链式比较。
13. 命中集合、矩阵、过滤、对象重载、函数值调用、网格调用、运行时后缀 TS-SQL 时,按“专题运算符入口表”跳到对应页面
14. `{$ifdef ...}` 只作为能力探测;编译选项边界 [16_lexical_structure_and_compile_options.md](16_lexical_structure_and_compile_options.md)。
15. 任务需要的运算符没有文档事实时,不要生成猜测写法;只能切到对应专题、项目自身文档或项目专属规则,仍无结论时记录文档缺口。
13. 集合、矩阵、过滤、对象重载、函数值调用、网格调用、运行时后缀 TS-SQL 的事实所有者由“专题运算符入口表”列出
14. `{$ifdef ...}` 只作为能力探测;编译选项边界 [16_lexical_structure_and_compile_options.md](16_lexical_structure_and_compile_options.md)。
15. 任务需要的运算符没有文档事实时,不要生成猜测写法;只能使用对应专题事实、项目自身文档或项目专属规则,仍无结论时记录文档缺口。
## 核心规则
@@ -44,13 +44,13 @@
| 函数默认参数 | `name = value` | 这是函数签名规则,不按比较表达式处理。 |
| 算术复合赋值 | `+=``-=``*=``/=``\=``%=``^=``~=``div=` | 已有变量需要原地更新时使用;`div=` 是整除复合赋值。 |
| 点前缀复合赋值 | `.&=``.&#124;=``.^=``.&&=``.&#124;&#124;=` | 位运算或点前缀逻辑需要原地更新时使用。 |
| 自增 / 自减 | `a++``a--``++a``--a` | 普通数字变量可直接用;对象重载语义 [24_object_overloads_and_iteration.md](24_object_overloads_and_iteration.md)。 |
| 自增 / 自减 | `a++``a--``++a``--a` | 普通数字变量可直接用;对象重载语义 [24_object_overloads_and_iteration.md](24_object_overloads_and_iteration.md)。 |
| 算术 | `+``-``*``/``\``%``div``mod``^``~` | 普通数值计算使用;`\` 是左除,`^` 是幂运算,`~` 是对数运算。 |
| 一元正负号 | `+x``-x` | 可直接用于数值表达式。 |
| 一元倒数 | `!x` | 整型、实型输入返回实型倒数;矩阵逆/广义逆 [22_matrix_deep_dive.md](22_matrix_deep_dive.md)。 |
| 一元倒数 | `!x` | 整型、实型输入返回实型倒数;矩阵逆/广义逆 [22_matrix_deep_dive.md](22_matrix_deep_dive.md)。 |
| 字符串连接 | `+``$` | 字符串拼接两种写法都已写入文档;默认优先用 `+`。 |
| 比较 | `=``<>``<``>``<=``>=` | `=` 只作比较,不作普通赋值。 |
| 点前缀比较 | `.=``.<>``.<``.>``.<=``.>=` | 标量比较可用;数组/矩阵样数据上的逐元素语义 [12_matrix_and_collections.md](12_matrix_and_collections.md)。 |
| 点前缀比较 | `.=``.<>``.<``.>``.<=``.>=` | 标量比较可用;数组/矩阵样数据上的逐元素语义 [12_matrix_and_collections.md](12_matrix_and_collections.md)。 |
| 逻辑 | `and``or``not``&&``&#124;&#124;``.&&``.&#124;&#124;``.!!` | 默认优先写 `and` / `or` / `not`;不要用 `!` 表示逻辑非。 |
| 位运算 | `.&``.&#124;``.!``.^``shl``shr``rol``ror` | 生成代码时写成点前缀或关键字形态;普通 `&``&#124;``~` 不作为位运算写法。 |
| 成员 / 下标 / 调用 | `obj.member``value[index]``Func(args)` | 普通访问和调用可直接使用;类、对象、函数细节回对应专题。 |
@@ -60,10 +60,10 @@
| Pascal 风格条件表达式 | `if condition then true_value else false_value` | 必须带 `else`。 |
| 表达式对象 | `@expr``&"..."` | 需要延迟求值或动态表达式对象时使用,并用 `eval(...)` 求值。 |
| 逗号表达式 | `(exp1, exp2, ..., expN)` | 从左到右求值,返回最后一个表达式结果。 |
| 集合 / 匹配 / 类型关系 | `in``sqlin``like``is` | 否定形态见下一行;集合运算 [12_matrix_and_collections.md](12_matrix_and_collections.md)。 |
| 集合 / 匹配 / 类型关系 | `in``sqlin``like``is` | 否定形态见下一行;集合运算 [12_matrix_and_collections.md](12_matrix_and_collections.md)。 |
| 否定关系 | `not in``not sqlin``not like``not is` | 直接使用这几种文档明确形态,不自行重组。 |
| 标量链式比较 | `:<``:>``:<>``:==``:>=``:<=` | 连续标量比较才使用。 |
| 矩阵链式比较 | `::<``::>``::<>``::==``::>=``::<=` | 数组逐元素链式比较才使用;数组与矩阵样数据细节 [12_matrix_and_collections.md](12_matrix_and_collections.md)。 |
| 矩阵链式比较 | `::<``::>``::<>``::==``::>=``::<=` | 数组逐元素链式比较才使用;数组与矩阵样数据细节 [12_matrix_and_collections.md](12_matrix_and_collections.md)。 |
### 专题运算符入口
@@ -100,9 +100,9 @@
按需生成规则:
- 已有变量需要原地更新时,才用 `+=``-=``*=``/=``\=``%=``^=``~=``div=``.&=``.|=``.^=``.&&=``.||=``a++;``a--;``++a;``--a;`
- 需要矩阵逆/广义逆时才使用 `!A`并回 [22_matrix_deep_dive.md](22_matrix_deep_dive.md) 确认矩阵生成规则
- 需要矩阵逆/广义逆时才使用 `!A`矩阵生成规则以 [22_matrix_deep_dive.md](22_matrix_deep_dive.md) 为准
- 位运算需要明确写成点前缀或关键字形态:`.&``.|``.!``.^``shl``shr``rol``ror`;普通 `&` 不作为位与写法使用。
- 点前缀比较 `.=``.<>``.<``.>``.<=``.>=` 命中数组/矩阵样数据时,先回 [12_matrix_and_collections.md](12_matrix_and_collections.md) 判断逐元素语义
- 点前缀比较 `.=``.<>``.<``.>``.<=``.>=` 命中数组/矩阵样数据时,逐元素语义以 [12_matrix_and_collections.md](12_matrix_and_collections.md) 为准
- 需要延迟求值或动态表达式对象时,才用 `@expr``&"..."`,并用 `eval(...)` 求值。
- 需要在一个表达式内按顺序执行多个子表达式时,才用逗号表达式 `(exp1, exp2, ..., expN)`
- 空安全访问只按 `a?.member``a?.[index]` 和本页示例里的 `c?.a?.[1]` 生成,不外推任意深链。
@@ -121,11 +121,11 @@
使用这些示例时遵守:
- `:=` 是普通变量赋值写法;常量初始化规则 [04_variables_and_constants.md](04_variables_and_constants.md)。
- 函数调用、命名参数、默认参数和函数值调用边界 [05_functions_and_calls.md](05_functions_and_calls.md);不要把函数签名里的 `name = value` 当成比较表达式。
- 分支/循环语句 [07_control_flow.md](07_control_flow.md);对象成员和类相关表达式 [08_objects_and_classes.md](08_objects_and_classes.md)。
- 字符串字面量、拼接与文本边界 [03_values_and_literals.md](03_values_and_literals.md);数组扩展和矩阵样数据 [12_matrix_and_collections.md](12_matrix_and_collections.md)。
- `{$ifdef ...}` 能力探测 [16_lexical_structure_and_compile_options.md](16_lexical_structure_and_compile_options.md),不要写成普通业务逻辑。
- `:=` 是普通变量赋值写法;常量初始化规则 [04_variables_and_constants.md](04_variables_and_constants.md)。
- 函数调用、命名参数、默认参数和函数值调用边界 [05_functions_and_calls.md](05_functions_and_calls.md);不要把函数签名里的 `name = value` 当成比较表达式。
- 分支/循环语句 [07_control_flow.md](07_control_flow.md);对象成员和类相关表达式 [08_objects_and_classes.md](08_objects_and_classes.md)。
- 字符串字面量、拼接与文本边界 [03_values_and_literals.md](03_values_and_literals.md);数组扩展和矩阵样数据 [12_matrix_and_collections.md](12_matrix_and_collections.md)。
- `{$ifdef ...}` 能力探测 [16_lexical_structure_and_compile_options.md](16_lexical_structure_and_compile_options.md),不要写成普通业务逻辑。
### 基础赋值和条件求值