♻️ refactor(tsl-syntax): make reference lookup-only

This commit is contained in:
csh
2026-07-13 09:16:53 +08:00
parent 4558d32043
commit b4d2fc8246
28 changed files with 41 additions and 109 deletions
+31 -25
View File
@@ -5,48 +5,54 @@ description: Use when Codex 需要编写、修改、审查或解释 TSL/TSF 代
# TSL Syntax Reference # TSL Syntax Reference
## 范围判断 ## 唯一检索入口
只处理 TSL/TSF 的语言语法、文件模型、表达式、控制流、对象、运行时语言结构和 TS-SQL 外形。先判断用户的问题是否属于“语言怎么写”;API 函数事实、命名偏好、代码风格、工具链、模块集成和项目执行事实分别交给其事实所有者。 本 Skill 只通过随附的 `scripts/lookup.py` 检索权威 TSL/TSF 语法事实,不手工选择或顺序通读 `references/` 页面。根据任务意图选择模式,并用用户的原始术语、错误文本和关键语法词组成查询:
## 写代码前确定文件模型 ```powershell
python <this-skill-dir>/scripts/lookup.py --query "命名参数 默认参数" --mode write
python <this-skill-dir>/scripts/lookup.py --query "invalid statement 声明区" --mode diagnose
python <this-skill-dir>/scripts/lookup.py --query "数组下标" --mode explain
```
生成或修改代码前,先读 [references/01_quickstart.md](references/01_quickstart.md),再根据交付目标确定 `.tsl``.tsf` 文件模型。后缀或顶层结构会影响正确性而需求不足时,停止并向用户确认;不要凭 Pascal、Python、JavaScript、TypeScript 或其他相似语言补全 TSL 语法 - `write`:编写或修改代码
- `diagnose`:定位语法错误或错误写法。
- `explain`:解释语言规则或代码含义。
## 选择一个主专题 以 lookup 返回的章节作为本次任务的事实来源;需要补充时改进查询词并再次检索,不得绕过 lookup 手工路由。
从 [references/index.md](references/index.md) 的“任务 → 主专题 → 停止条件”表选择一个主专题。先按最具体的任务信号命中,不要顺序通读全部专题,也不要把路由页本身当成语法事实页。 ## 事实边界
## 渐进读取候选页 本 Skill 只拥有 TSL/TSF 的语言语法、文件模型、表达式、控制流、对象、运行时语言结构和 TS-SQL 外形。其他事实交给对应所有者:
先读主专题,只在主专题明确列出的候选页中继续读取。每次只补当前缺口;得到足够事实后停止。遇到语法错误、相互矛盾的写法或高频误写时,再读 [references/11_pitfalls.md](references/11_pitfalls.md) 交叉核对 - API 名称、签名、参数、返回值和金融取数事实:使用 `tsl-api-reference` skill
- 命名、代码风格、工具链和模块集成:使用目标仓库相应文档、脚本或 CI。
- 项目路径、数据结构、部署方式和运行参数:只使用目标项目的真实文档与配置。
## 遵守代码块身份协议 不要把外部领域事实复制或猜测进本 Skill。
页面级元数据只用于粗筛,生成代码时以紧邻代码块的 `代码块身份` 为准: ## 代码块身份
- `可直接照写示例`:可以作为源码外形,但仍需按当前任务替换业务内容。 生成或判断代码时,必须遵守 lookup 结果中紧邻代码围栏的身份。只允许以下五种身份:
- `可直接照写示例`:可作为源码外形,但仍需按当前任务替换业务内容。
- `反例 / 不可照写`:只用于识别错误边界,不得复制为实现。 - `反例 / 不可照写`:只用于识别错误边界,不得复制为实现。
- `输出片段`:只表示结果,不得当作源码。 - `输出片段`:只表示结果,不得当作源码。
- `配置片段 / 概念骨架`:只表达结构或配置意图,不得假定为可直接运行代码。 - `配置片段 / 概念骨架`:只表达结构或配置意图,不得假定为可直接运行代码。
- `仅服务端可执行示例`:只在相应服务端运行环境中成立,不得当作通用本地可执行示例。
代码块没有身份、身份与正文冲突或缺少支持当前结论的事实时,停止生成并报告缺口。
## 交接其他事实所有者
- API 名称、签名、参数、返回值和金融取数事实:使用 `tsl-api-reference` skill。
- 命名偏好:交给仓库的 `docs/tsl/naming.md`
- 代码风格:交给仓库的 `docs/tsl/code_style.md`
- 验证命令与工具链:交给仓库的 `docs/tsl/toolchain.md`、项目脚本或 CI。
- Python 调 TSL、回测、通知等模块集成:交给仓库的 `docs/tsl/modules/`
- 项目路径、数据结构、部署方式和运行参数:只使用目标项目的真实文档与配置。
不要把这些外部领域复制进本 Skill;完成交接后由对应事实所有者继续判断。
## 缺口时停止 ## 缺口时停止
主专题和候选页没有给出结论、运行时版本不明、项目事实缺失依赖的 Skill 不可用时,明确说明缺失项并停止。不得经验、相似语言或猜测产生新的 TSL 写法。 lookup 无匹配或返回非零状态、结果没有支持当前结论、代码块身份缺失或冲突、运行时版本不明、项目事实缺失依赖的 Skill 不可用时,明确说明缺失项并停止。不得改为手工浏览全部参考页,也不得凭经验、相似语言或猜测产生新的 TSL 写法。
## 执行 TSL 前读取项目指引 ## 执行 TSL 前读取项目指引
需要实际执行 TSL 时,先读取目标文件附近最近的 `AGENTS.md`,完成平台检测并严格使用其中指定的解释器环境。不同平台或多个 Windows 环境不得混用、默认任选或自行回退。 需要实际执行 TSL 时,先读取目标文件附近最近的 `AGENTS.md`,完成平台检测并严格使用其中指定的解释器环境。不同平台或多个 Windows 环境不得混用、默认任选或自行回退。
## 维护校验
维护本 Skill、参考页或 lookup 实现后必须运行:
```powershell
python <this-skill-dir>/scripts/lookup.py --check
```
@@ -1,4 +1,4 @@
interface: interface:
display_name: "TSL Syntax Reference" display_name: "TSL Syntax Reference"
short_description: "检索并验证 TSL/TSF 语法与运行时语言规则事实" short_description: "检索并验证 TSL/TSF 语法与运行时语言规则事实"
default_prompt: "Use $tsl-syntax-reference to look up and verify TSL/TSF syntax from authoritative references." default_prompt: "Use $tsl-syntax-reference and its bundled lookup to retrieve authoritative TSL/TSF syntax facts."
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本文“下一步路由”继续判断;文件模型看 [02_core_model.md](02_core_model.md),函数 / 调用看 [05_functions_and_calls.md](05_functions_and_calls.md),类看 [08_objects_and_classes.md](08_objects_and_classes.md)`unit` / `uses` 看 [09_units_and_scope.md](09_units_and_scope.md),反例和负向边界看 [11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
本篇只回答两个落代码前问题:用户已给出 `.tsl` / `.tsf` 后缀时,智能体如何按后缀组织代码;以及生成代码前必须先核对哪些语言硬规则。 本篇只回答两个落代码前问题:用户已给出 `.tsl` / `.tsf` 后缀时,智能体如何按后缀组织代码;以及生成代码前必须先核对哪些语言硬规则。
@@ -19,7 +18,7 @@
3. 只从 `代码块身份:可直接照写示例` 的骨架起手;遇到 `反例 / 不可照写` 必须避开。 3. 只从 `代码块身份:可直接照写示例` 的骨架起手;遇到 `反例 / 不可照写` 必须避开。
4.`.tsl` 时,先写会执行的语句区;需要函数或类时,把声明区放在语句区之后。 4.`.tsl` 时,先写会执行的语句区;需要函数或类时,把声明区放在语句区之后。
5.`.tsf` 时,只写可复用顶层声明,不写入口脚本流程;部署、查找路径和解释器环境属于项目执行层。 5.`.tsf` 时,只写可复用顶层声明,不写入口脚本流程;部署、查找路径和解释器环境属于项目执行层。
6. 本页和对应专题页没有覆盖的写法,不要发明语法;按“下一步路由”切到对应专题页判断;仍无文档事实时向用户确认或记录文档缺口。 6. 本页和对应专题页没有覆盖的写法,不要发明语法;仍无文档事实时向用户确认或记录文档缺口。
## 语言核心事实速查 ## 语言核心事实速查
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本文“下一步路由”继续判断;最短骨架和高频硬规则看 [01_quickstart.md](01_quickstart.md),函数 / 过程看 [05_functions_and_calls.md](05_functions_and_calls.md),类看 [08_objects_and_classes.md](08_objects_and_classes.md)`unit` / `uses` 看 [09_units_and_scope.md](09_units_and_scope.md),反例和负向边界看 [11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
本篇说明 TSL 的文件模型判断规则:智能体如何区分 `.tsl` 可执行脚本与 `.tsf` 可复用声明文件,如何识别脚本语句区和声明区,以及为什么很多错误其实是“文件模型选错了”。 本篇说明 TSL 的文件模型判断规则:智能体如何区分 `.tsl` 可执行脚本与 `.tsf` 可复用声明文件,如何识别脚本语句区和声明区,以及为什么很多错误其实是“文件模型选错了”。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[04_variables_and_constants.md](04_variables_and_constants.md)、[06_expressions_and_operators.md](06_expressions_and_operators.md)、[12_matrix_and_collections.md](12_matrix_and_collections.md)、[17_types_and_conversions.md](17_types_and_conversions.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇整理基本类型、字面量、数组、字符串、字符串编码边界与基础值模型,避免把值规则分散在函数或金融示例里。 这一篇整理基本类型、字面量、数组、字符串、字符串编码边界与基础值模型,避免把值规则分散在函数或金融示例里。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[03_values_and_literals.md](03_values_and_literals.md)、[06_expressions_and_operators.md](06_expressions_and_operators.md)、[05_functions_and_calls.md](05_functions_and_calls.md)、[16_lexical_structure_and_compile_options.md](16_lexical_structure_and_compile_options.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇收拢变量与常量初始化规则。 这一篇收拢变量与常量初始化规则。
@@ -4,9 +4,8 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[02_core_model.md](02_core_model.md)(优先)、[09_units_and_scope.md](09_units_and_scope.md)、[16_lexical_structure_and_compile_options.md](16_lexical_structure_and_compile_options.md)、[18_external_calls_and_threads.md](18_external_calls_and_threads.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇只负责 `function` / `procedure` 的定义、调用、参数传递和值返回。跨 `unit` 声明边界、外部系统交互和业务函数库只在本页保留路由或最小边界。 这一篇只负责 `function` / `procedure` 的定义、调用、参数传递和值返回。跨 `unit` 声明边界、外部系统交互和业务函数库只在本页保留最小边界。
## 本篇职责 ## 本篇职责
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页表格和专题入口继续判断;[03_values_and_literals.md](03_values_and_literals.md)、[04_variables_and_constants.md](04_variables_and_constants.md)、[05_functions_and_calls.md](05_functions_and_calls.md)、[07_control_flow.md](07_control_flow.md)、[08_objects_and_classes.md](08_objects_and_classes.md)、[12_matrix_and_collections.md](12_matrix_and_collections.md)、[16_lexical_structure_and_compile_options.md](16_lexical_structure_and_compile_options.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇集中放语言级表达式与运算符。智能体写代码时,只使用本页和对应专题页已经明确的表达式事实,不要把其他语言或外部资料里的运算符习惯直接搬进 TSL。 这一篇集中放语言级表达式与运算符。智能体写代码时,只使用本页和对应专题页已经明确的表达式事实,不要把其他语言或外部资料里的运算符习惯直接搬进 TSL。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页规则和示例继续判断;[05_functions_and_calls.md](05_functions_and_calls.md)、[06_expressions_and_operators.md](06_expressions_and_operators.md)、[15_debug_and_profiler.md](15_debug_and_profiler.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇只收录流程控制与异常控制,不讨论金融语义。 这一篇只收录流程控制与异常控制,不讨论金融语义。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:仅部分 是否可直接用于生成代码:仅部分
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[02_core_model.md](02_core_model.md)(优先)、[09_units_and_scope.md](09_units_and_scope.md)、[20_object_runtime_and_introspection.md](20_object_runtime_and_introspection.md)、[21_builtin_runtime_objects.md](21_builtin_runtime_objects.md)、[24_object_overloads_and_iteration.md](24_object_overloads_and_iteration.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇收拢面向对象语法,只保留语言层规则。 这一篇收拢面向对象语法,只保留语言层规则。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:仅部分 是否可直接用于生成代码:仅部分
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[02_core_model.md](02_core_model.md)(优先)、[19_namespace_libpath_and_unit_runtime.md](19_namespace_libpath_and_unit_runtime.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇只讲“怎么写和怎么调用 `unit`”。`namespace`、查找路径、`unit` 生命周期、`tsl.conf` 与运行时入口统一放到 [19_namespace_libpath_and_unit_runtime.md](19_namespace_libpath_and_unit_runtime.md)。 这一篇只讲“怎么写和怎么调用 `unit`”。`namespace`、查找路径、`unit` 生命周期、`tsl.conf` 与运行时入口统一放到 [19_namespace_libpath_and_unit_runtime.md](19_namespace_libpath_and_unit_runtime.md)。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:仅部分 是否可直接用于生成代码:仅部分
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[05_functions_and_calls.md](05_functions_and_calls.md)、[06_expressions_and_operators.md](06_expressions_and_operators.md)、[14_ts_sql.md](14_ts_sql.md)、[15_debug_and_profiler.md](15_debug_and_profiler.md)、[19_namespace_libpath_and_unit_runtime.md](19_namespace_libpath_and_unit_runtime.md)、[21_builtin_runtime_objects.md](21_builtin_runtime_objects.md);函数事实使用 `tsl-api-reference` skill;仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇只处理运行时环境参数、块环境 `with` 语句、`with` 后缀、`#` 网格调用、`timeout` 后缀、`dupvalue(...)` 和全局缓存,不处理任何金融业务语义。 这一篇只处理运行时环境参数、块环境 `with` 语句、`with` 后缀、`#` 网格调用、`timeout` 后缀、`dupvalue(...)` 和全局缓存,不处理任何金融业务语义。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:否 是否可直接用于生成代码:否
是否含可直接照写示例:否 是否含可直接照写示例:否
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[02_core_model.md](02_core_model.md)、[03_values_and_literals.md](03_values_and_literals.md)、[05_functions_and_calls.md](05_functions_and_calls.md)、[06_expressions_and_operators.md](06_expressions_and_operators.md)、[08_objects_and_classes.md](08_objects_and_classes.md)、[09_units_and_scope.md](09_units_and_scope.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇不讲新知识,只做反例索引。 这一篇不讲新知识,只做反例索引。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:否 是否含不可照写反例:否
遇到不确定时:先按本页候选页继续判断;[13_resultset_and_filters.md](13_resultset_and_filters.md)、[22_matrix_deep_dive.md](22_matrix_deep_dive.md)、[23_fmarray.md](23_fmarray.md)、[14_ts_sql.md](14_ts_sql.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇收拢 `array(...)` 的扩展用法:顺序数组、字符串键表、嵌套数组、本页明确的矩阵样比较,以及 `in` / `sqlin` / `union2` / `intersect` / `minus` / `outersect` 这类去重型集合关系。 这一篇收拢 `array(...)` 的扩展用法:顺序数组、字符串键表、嵌套数组、本页明确的矩阵样比较,以及 `in` / `sqlin` / `union2` / `intersect` / `minus` / `outersect` 这类去重型集合关系。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[12_matrix_and_collections.md](12_matrix_and_collections.md)、[14_ts_sql.md](14_ts_sql.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇只讲结果集过滤语法:怎样按某一列过滤、怎样按整行过滤、怎样只返回行下标,以及怎样按字段列表过滤。它不负责 TS-SQL 查询语法,也不把去重型集合运算和业务选股逻辑混进来。 这一篇只讲结果集过滤语法:怎样按某一列过滤、怎样按整行过滤、怎样只返回行下标,以及怎样按字段列表过滤。它不负责 TS-SQL 查询语法,也不把去重型集合运算和业务选股逻辑混进来。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[13_resultset_and_filters.md](13_resultset_and_filters.md)、[12_matrix_and_collections.md](12_matrix_and_collections.md)、[23_fmarray.md](23_fmarray.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇是 TS-SQL 的唯一语法入口:内存数组查询、返回形态、字段访问、`where` / `group by` / `order by`、一维数组查询、多表 `join`(含 `left join`)、`insert` / `update` / `delete` 写回、`thisGroup``thisRowIndex``refMaxOf` / `refMinOf` 都在这里收拢。 这一篇是 TS-SQL 的唯一语法入口:内存数组查询、返回形态、字段访问、`where` / `group by` / `order by`、一维数组查询、多表 `join`(含 `left join`)、`insert` / `update` / `delete` 写回、`thisGroup``thisRowIndex``refMaxOf` / `refMinOf` 都在这里收拢。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:仅部分 是否可直接用于生成代码:仅部分
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[07_control_flow.md](07_control_flow.md)、[10_runtime_context_and_with.md](10_runtime_context_and_with.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇收拢本页明确的调试、计时、性能分析器和调用栈相关入口。 这一篇收拢本页明确的调试、计时、性能分析器和调用栈相关入口。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[17_types_and_conversions.md](17_types_and_conversions.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇吸收语法手册里“词法层”和“编译期开关”相关内容:标识符、注释、条件编译和依赖编译选项。 这一篇吸收语法手册里“词法层”和“编译期开关”相关内容:标识符、注释、条件编译和依赖编译选项。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[03_values_and_literals.md](03_values_and_literals.md)、[04_variables_and_constants.md](04_variables_and_constants.md)、[23_fmarray.md](23_fmarray.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇吸收语言基础里“数据类型、初始值、弱类型行为、类型转换、复数类型”这一层。 这一篇吸收语言基础里“数据类型、初始值、弱类型行为、类型转换、复数类型”这一层。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:仅部分 是否可直接用于生成代码:仅部分
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[05_functions_and_calls.md](05_functions_and_calls.md)、[19_namespace_libpath_and_unit_runtime.md](19_namespace_libpath_and_unit_runtime.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇吸收函数专题里和外部系统交互有关的部分:`external`、动态库调用、原生函数指针包装、C 回调和线程调用。 这一篇吸收函数专题里和外部系统交互有关的部分:`external`、动态库调用、原生函数指针包装、C 回调和线程调用。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:仅部分 是否可直接用于生成代码:仅部分
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[09_units_and_scope.md](09_units_and_scope.md)、[20_object_runtime_and_introspection.md](20_object_runtime_and_introspection.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇收拢 `unit` 的运行时行为,以及 `.tsf` / `namespace` / `libpath` 的查找规则。`unit` 的基础写法、`uses` 位置和重名解析,统一放在 [09_units_and_scope.md](09_units_and_scope.md)。 这一篇收拢 `unit` 的运行时行为,以及 `.tsf` / `namespace` / `libpath` 的查找规则。`unit` 的基础写法、`uses` 位置和重名解析,统一放在 [09_units_and_scope.md](09_units_and_scope.md)。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:仅部分 是否可直接用于生成代码:仅部分
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[08_objects_and_classes.md](08_objects_and_classes.md)、[16_lexical_structure_and_compile_options.md](16_lexical_structure_and_compile_options.md)、[21_builtin_runtime_objects.md](21_builtin_runtime_objects.md)、[24_object_overloads_and_iteration.md](24_object_overloads_and_iteration.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇收拢对象模型里不适合继续堆在基础类主线里的运行时内容:类信息、函数句柄、对象状态、引用计数、运行时对象枚举、弱引用与自动弱引用。普通类声明、继承、构造和普通对象创建仍以 [08_objects_and_classes.md](08_objects_and_classes.md) 为主线;本页只在用户明确需要运行时反射、内省、对象生命周期或弱引用能力时进入。 这一篇收拢对象模型里不适合继续堆在基础类主线里的运行时内容:类信息、函数句柄、对象状态、引用计数、运行时对象枚举、弱引用与自动弱引用。普通类声明、继承、构造和普通对象创建仍以 [08_objects_and_classes.md](08_objects_and_classes.md) 为主线;本页只在用户明确需要运行时反射、内省、对象生命周期或弱引用能力时进入。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:仅部分 是否可直接用于生成代码:仅部分
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[20_object_runtime_and_introspection.md](20_object_runtime_and_introspection.md)、[10_runtime_context_and_with.md](10_runtime_context_and_with.md)、[11_pitfalls.md](11_pitfalls.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇只收运行时内置对象的文档明确最小模型。这里讲的是语言运行时对象,不是金融业务 API。 这一篇只收运行时内置对象的文档明确最小模型。这里讲的是语言运行时对象,不是金融业务 API。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[12_matrix_and_collections.md](12_matrix_and_collections.md)、[23_fmarray.md](23_fmarray.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇只讲矩阵专用语法主干:矩阵初始化、数列构造、矩阵逆/广义逆、矩阵乘除乘方、矩阵转置、矩阵拼接、矩阵尺寸与索引、矩阵遍历、子矩阵和 `mfind` 查找。它和 [12_matrix_and_collections.md](12_matrix_and_collections.md) 的分工是:`12` 讲普通数组与集合关系,这一篇讲矩阵专用构造、运算、遍历、子矩阵和矩阵查找接口。 这一篇只讲矩阵专用语法主干:矩阵初始化、数列构造、矩阵逆/广义逆、矩阵乘除乘方、矩阵转置、矩阵拼接、矩阵尺寸与索引、矩阵遍历、子矩阵和 `mfind` 查找。它和 [12_matrix_and_collections.md](12_matrix_and_collections.md) 的分工是:`12` 讲普通数组与集合关系,这一篇讲矩阵专用构造、运算、遍历、子矩阵和矩阵查找接口。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:是 是否可直接用于生成代码:是
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:是 是否含不可照写反例:是
遇到不确定时:先按本页候选页继续判断;[22_matrix_deep_dive.md](22_matrix_deep_dive.md)、[12_matrix_and_collections.md](12_matrix_and_collections.md)、[14_ts_sql.md](14_ts_sql.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇只讲 `FMArray` 文档主干能力:怎样构造 `FMArray`、怎样判断类型、怎样和 `Array` 互转、怎样读取尺寸、做基础运算、做多维转置与维度交换、做矩阵连接、参与 `select/mselect`,以及 `insert/delete/update` 语法边界。 这一篇只讲 `FMArray` 文档主干能力:怎样构造 `FMArray`、怎样判断类型、怎样和 `Array` 互转、怎样读取尺寸、做基础运算、做多维转置与维度交换、做矩阵连接、参与 `select/mselect`,以及 `insert/delete/update` 语法边界。
@@ -4,7 +4,6 @@
是否可直接用于生成代码:仅部分 是否可直接用于生成代码:仅部分
是否含可直接照写示例:是 是否含可直接照写示例:是
是否含不可照写反例:否 是否含不可照写反例:否
遇到不确定时:先按本页候选页继续判断;[08_objects_and_classes.md](08_objects_and_classes.md)、[20_object_runtime_and_introspection.md](20_object_runtime_and_introspection.md)、[17_types_and_conversions.md](17_types_and_conversions.md);仍在语法层但不命中时回到本 Skill 路由中心 [index.md](index.md);如果问题已经超出语法层,停止并交接给对应事实所有者
这一篇只讲对象直接参与语言级操作的文档能力:基础算符重载、`[]` 重载、`for in` 重载,以及 `mrows` / `mcols` / `msize` 这类矩阵关键字重载。 这一篇只讲对象直接参与语言级操作的文档能力:基础算符重载、`[]` 重载、`for in` 重载,以及 `mrows` / `mcols` / `msize` 这类矩阵关键字重载。
@@ -1,36 +0,0 @@
# TSL 语法任务路由
本页是 24 个 TSL/TSF 语法专题的唯一完整路由。只选择一个最具体的主专题;主专题内已有足够事实时立即停止,只有该页明确列出的候选页才能作为下一跳。
## 任务 → 主专题 → 停止条件
| 任务信号 | 主专题 | 停止条件 |
| ----------------------------------------------------------- | ------------------------------------------------------------------------------------------ | -------------------------------- |
| 写最短骨架、先核对核心语言事实 | [01_quickstart.md](01_quickstart.md) | 文件后缀或交付目标不足以判断 |
| 判断 `.tsl` / `.tsf`、顶层语句区、声明区、文件模型 | [02_core_model.md](02_core_model.md) | 文件模型仍不明确 |
| 写值、数组、字符串、字符串编码边界 | [03_values_and_literals.md](03_values_and_literals.md) | 需要未记录的字面量或编码写法 |
| 写变量、常量、显式声明 | [04_variables_and_constants.md](04_variables_and_constants.md) | 生命周期或作用域事实缺失 |
| 写 `function` / `procedure`、参数、默认参数、命名参数、变参 | [05_functions_and_calls.md](05_functions_and_calls.md) | 需要未记录的调用外形 |
| 写赋值、比较、条件表达式和运算符 | [06_expressions_and_operators.md](06_expressions_and_operators.md) | 只能依赖相似语言推断 |
| 写条件、循环、异常控制 | [07_control_flow.md](07_control_flow.md) | 块结构或跳转语义不明 |
| 写类、继承、property、静态字段、构造函数 | [08_objects_and_classes.md](08_objects_and_classes.md) | 需要未记录的对象模型写法 |
| 写 `unit` / `uses` 和声明作用域 | [09_units_and_scope.md](09_units_and_scope.md) | 文件名、模块边界或查找事实缺失 |
| 写运行时环境参数、`with array(...)`、网格调用或全局缓存 | [10_runtime_context_and_with.md](10_runtime_context_and_with.md) | 需要项目运行时事实 |
| 核对高频误写、反例和负向边界 | [11_pitfalls.md](11_pitfalls.md) | 反例没有指向可验证的专题事实 |
| 写数组创建、键表、集合运算 | [12_matrix_and_collections.md](12_matrix_and_collections.md) | 需要未记录的数据结构操作 |
| 写结果集过滤 | [13_resultset_and_filters.md](13_resultset_and_filters.md) | 结果集来源或字段结构不明 |
| 写 TS-SQL 查询外形 | [14_ts_sql.md](14_ts_sql.md) | 需要未记录的查询语法或业务数据源 |
| 使用调试与性能分析器 | [15_debug_and_profiler.md](15_debug_and_profiler.md) | 需要项目执行环境 |
| 查注释、条件编译、编译选项或词法边界 | [16_lexical_structure_and_compile_options.md](16_lexical_structure_and_compile_options.md) | 解释器版本或编译选项不明 |
| 查显式类型、转换规则、复数 | [17_types_and_conversions.md](17_types_and_conversions.md) | 转换结果没有文档事实 |
| 写 `external`、DLL 或多线程边界 | [18_external_calls_and_threads.md](18_external_calls_and_threads.md) | 外部库、平台或线程事实缺失 |
| 查 `namespace``Libpath`、unit 运行时和查找路径 | [19_namespace_libpath_and_unit_runtime.md](19_namespace_libpath_and_unit_runtime.md) | 部署路径或命名空间事实缺失 |
| 查对象运行时、自省、反射或弱引用 | [20_object_runtime_and_introspection.md](20_object_runtime_and_introspection.md) | 需要未记录的反射能力 |
| 查运行时内置对象 | [21_builtin_runtime_objects.md](21_builtin_runtime_objects.md) | 构造或成员事实缺失 |
| 查矩阵进阶语法 | [22_matrix_deep_dive.md](22_matrix_deep_dive.md) | 矩阵语义或维度规则不明 |
| 查 `FMArray` 专属语法 | [23_fmarray.md](23_fmarray.md) | 专属能力没有文档事实 |
| 查对象运算符重载或遍历重载 | [24_object_overloads_and_iteration.md](24_object_overloads_and_iteration.md) | 重载入口或调用语义不明 |
## 超出语法层时交接
函数/API、命名、风格、工具链、模块集成和项目运行事实不属于本路由。命中这些任务时停止语法检索,只说明应交给对应事实所有者,不复制或猜测外部领域内容。
+7 -21
View File
@@ -115,27 +115,13 @@ class TslSyntaxReferenceSkillStructureTest(unittest.TestCase):
link_path = target.split("#", 1)[0] link_path = target.split("#", 1)[0]
self.assertTrue((REFERENCES_DIR / link_path).is_file(), f"{path}: {target}") self.assertTrue((REFERENCES_DIR / link_path).is_file(), f"{path}: {target}")
def test_index_is_only_complete_topic_router(self) -> None: def test_skill_uses_lookup_as_its_only_retrieval_entry(self) -> None:
index_text = read_text(REFERENCES_DIR / "index.md") text = read_text(SKILL_FILE)
self.assertEqual( self.assertIn("scripts/lookup.py", text)
{name for name in TOPIC_REFERENCES if f"]({name})" in index_text}, for mode in ("write", "diagnose", "explain"):
TOPIC_REFERENCES, self.assertIn(f"--mode {mode}", text)
) self.assertEqual(local_link_targets(text), [])
for path in REFERENCES_DIR.glob("*.md"): self.assertNotIn("references/index.md", text)
if path.name == "index.md":
continue
linked_topics = {name for name in TOPIC_REFERENCES if f"]({name})" in read_text(path)}
self.assertNotEqual(linked_topics, TOPIC_REFERENCES, path.name)
skill_links = set(local_link_targets(read_text(SKILL_FILE)))
self.assertEqual(
skill_links,
{
"references/01_quickstart.md",
"references/index.md",
"references/11_pitfalls.md",
},
)
def test_skill_does_not_bundle_external_domains(self) -> None: def test_skill_does_not_bundle_external_domains(self) -> None:
forbidden = { forbidden = {