📝 docs(tsl): clarify syntax constraints and enhance test infrastructure

- Add TSF file naming constraint to syntax/02_core_model.md
- Clarify semicolon rules: syntax facts vs style preferences
- Separate control flow end semicolon rules (syntax allows both)
- Add function body semicolon requirements to syntax/05_functions_and_calls.md
- Move style preferences to code_style.md (control flow end semicolons)
- Remove cross-references from syntax docs to maintain independence
- Enhance Gitea workflow emoji for better CI output readability
- Fix CI test path from tests/ to test/
- Organize agent test results under test/agent/result/ directory
- Add complete Chinese translation of test cases (test_cases_zh.md)
- Clean up .gitignore to use unified test/agent/result/ directory
- Remove obsolete agent test artifacts (REPORTS_LOCATION.md, old results)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
csh
2026-06-21 17:04:50 +08:00
co-authored by Claude Opus 4.6
parent 6026401907
commit 8b93311cae
138 changed files with 7018 additions and 1705 deletions
+11 -11
View File
@@ -4,7 +4,7 @@
是否可直接用于生成代码:仅部分
是否含可直接照写示例:否
是否含不可照写反例:否
遇到不确定时:[naming.md](naming.md)、[syntax/index.md](syntax/index.md)[toolchain.md](toolchain.md)
遇到不确定时:风格/命名看 [naming.md](naming.md);语法事实看 [syntax/index.md](syntax/index.md);验证命令或自动化入口只看项目脚本、CI,或目标项目已真实填写且没有 `<...>` 占位符的 [toolchain.md](toolchain.md)
本页记录本仓库代码风格偏好,不代表 TSL 语法事实。
@@ -22,20 +22,19 @@
### 1.1 单一职责
- 一个文件只做一件事;职责明确。
- `.tsl` 作为可执行脚本:语句区在前并按顺序执行;需要本文件函数/类时,声明区放在语句区之后
- `.tsf` 作为模块/函数扩展文件:可复用逻辑下沉到 `.tsf`,部署到解释器 `funcext` 后供脚本调用
- 文件模型和顶层声明规则以 `docs/tsl/syntax/02_core_model.md` 为准;本页只规定组织偏好
- 可复用逻辑优先集中到可复用声明文件;入口/编排层只保留必要流程
- 当一个顶层声明同时承担“协议适配 + 业务计算 +
I/O/环境依赖 + 临时代码”时,优先拆分边界:核心纯逻辑 → 工具函数 → 边界适配(I/O)。
### 1.2 文件名与顶层声明(硬约束)
### 1.2 文件名与顶层声明
- TSL 语法要求(仅 `.tsf`):每个 `.tsf`
文件只能有一个顶层声明,且文件基名必须与顶层声明同名
- `.tsl` 允许直接写语句,不要求顶层声明;文件名不强制,但建议清晰可检索。
- `.tsl` 中如果同时需要脚本语句和函数/类声明,先写语句区,再写声明区;不要在声明区后继续追加脚本语句。
- 文件模型和顶层声明规则以 `docs/tsl/syntax/02_core_model.md` 为准;文件和实体如何命名见
`docs/tsl/naming.md`
- 文件名不强制表达完整职责,但应清晰可检索。
- 推荐文件名使用 `PascalCase` 以提升检索与协作一致性;扩展名按类型使用
`.tsl`/`.tsf`(两者都属于 TSL 源文件,风格规则一致)。
- 详细约束与命名细则见 `docs/tsl/naming.md`
- 重命名时同步检查引用、调用点、项目配置和文档链接
### 1.3 依赖与分层
@@ -92,6 +91,7 @@ end
- 多语句分支使用 `begin/end` 包裹:在 `then/else` 后换行写 `begin``end`
单独成行。
- `else/elseif` 等分支关键字另起一行,与上一块的 `end` 对齐。
- 控制流块(`if`/`while`/`for`/`case`/`try` 等)的 `end` 后不加分号;顶层声明(函数/过程/类/`unit`)的 `end` 后加分号(这是语法要求,见 `syntax/05_functions_and_calls.md``syntax/09_units_and_scope.md`)。
- 单语句分支可省略 `begin/end`(保持清晰优先;一旦分支变复杂就回退到块结构):
代码块身份:配置片段 / 概念骨架
@@ -195,8 +195,8 @@ count := count + 1;
## 4. 代码实践(Best Practices
> 本节偏“实践建议”(should),用于提升可读性/可测试性;若目标项目有更严格的约束与检查命令,以项目落地的工具链为准(参考
> `docs/tsl/toolchain.md`。如果项目对自动化或 AI 代理有额外要求,应把约束直接写进仓库内可见的检查脚本、CI 配置或项目文档,而不是依赖隐藏规范。
> 本节偏“实践建议”(should),用于提升可读性/可测试性;若目标项目有更严格的约束与检查命令,以项目脚本、CI 配置,或已填写且没有 `<...>` 占位符的
> `docs/tsl/toolchain.md` 为准。如果项目对自动化或 AI 代理有额外要求,应把约束直接写进仓库内可见的检查脚本、CI 配置或项目文档,而不是依赖隐藏规范。
### 4.1 变量与常量
+29 -70
View File
@@ -1,83 +1,42 @@
# TSL 文档入口
文档类型:检索
文档类型:跨层路由
是否可直接用于生成代码:否
是否含可直接照写示例:否
是否含不可照写反例:否
遇到不确定时:先按本文“任务路由”分层;语法问题看 [syntax/index.md](syntax/index.md),函数库查询看 [reference/index.md](reference/index.md),模块 / 集成看 [modules/index.md](modules/index.md),项目执行问题回项目自身文档、`scripts/*` 入口脚本和 CI 配置
遇到不确定时:先按“按任务跳转”分层;语法问题看 [syntax/index.md](syntax/index.md),函数库查询看 [reference/index.md](reference/index.md),模块 / 集成看 [modules/index.md](modules/index.md),项目执行问题回项目自身文档、`scripts/*` 入口脚本和 CI 配置
入口只负责一件事:让智能体先判断主问题属于哪一层,再进入最相关的单个入口页。本套 TSL 文档面向智能体决策,不按人类教程组织;回答和生成代码时必须按流程读,不要凭语言相似性补全
页只决定第一跳。不要在这里生成代码,不要通读全部 TSL 文档,不要用相似语言补全 TSL 事实
## 起手规则
## 按任务跳转
1. 先判断主问题层:语法、函数库、模块 / 集成,还是项目执行。
2. 只进入命中的单个入口页;不要同时展开语法、业务、函数库、模块和工具链。
3. 如果要生成或修改 TSL 代码,先做文件模型初判;详细规则见 [syntax/02_core_model.md](syntax/02_core_model.md)
- 用户已给出 `.tsl` / `.tsf` 后缀时,后缀就是判断依据。
- 用户未给后缀时,按交付目标判断:入口流程、脚本任务或一次性执行逻辑对应 `.tsl`;可复用函数、过程、类、模块或扩展对应 `.tsf`
- 仍不明确时先向用户确认,不要靠相似语言补全。
4. 写代码前找 `代码块身份:可直接照写示例`;遇到 `反例 / 不可照写`、输出片段或概念骨架必须避开。
5. 语法细节统一进入 [syntax/index.md](syntax/index.md) 后再分流;本页只保留跨层路由需要的最小提醒。
6. 本手册没有结论时,不要发明语法;改为向用户确认、记录文档缺口,或交由维护者补充文档结论。
| 任务信号 | 入口 | 阻断条件 |
| ------------------------------------------------- | ------------------------------------------------------------------------ | ------------------------------------------ |
| 写最短可运行骨架、核对语言核心事实 | [syntax/01_quickstart.md](syntax/01_quickstart.md) | `.tsl` / `.tsf` 文件模型不明 |
| 判断语法能不能写、查语言写法 | [syntax/index.md](syntax/index.md) | 没有命中具体语法专题 |
| 核对高频误写、反例、负向边界 | [syntax/11_pitfalls.md](syntax/11_pitfalls.md) | 反例没有指向正确专题 |
| 查行情、财务、板块、选股等金融函数 | [reference/catalog/datawarehouse.md](reference/catalog/datawarehouse.md) | 没有命中带参数表的函数事实条目 |
| 查通用函数库函数名、参数、返回值 | [reference/index.md](reference/index.md) | catalog 没有正式函数条目 |
| 用 Python 调 TSL、调用服务器函数、批量或异步取数 | [modules/pytsl_api.md](modules/pytsl_api.md) | 真实账号、服务地址、业务字段来自项目上下文 |
| 写回测框架、组合回测、读取回测结果 | [modules/tsbacktesting.md](modules/tsbacktesting.md) | 策略信号、证券池、资金参数缺失 |
| 看模块、集成、互操作入口 | [modules/index.md](modules/index.md) | 模块 API 与项目执行边界不清 |
| 确认账户、真实接口、部署、脚本入口、环境变量或 CI | 项目自身文档、`scripts/*` 入口脚本、CI 配置 | 只有通用 TSL 文档,没有项目事实 |
## 元数据与证据标签
项目执行事实条件:只有目标项目已真实填写且没有 `<...>` 占位符的 [toolchain.md](toolchain.md) 才可作为执行依据。
- 页头里的 `是否可直接用于生成代码` 只做页面级粗判断;如果页内已经给出 `代码块身份`,一律以块级标签为准。
- `是否可直接用于生成代码` 有三种值:`是``否``仅部分`;其中 `仅部分` 表示页内既有可直接参考的块,也有依赖多文件、查找路径或运行时环境的块,必须继续看块级标签。
- `是否含可直接照写示例` 只统计可直接照写的正向代码示例。
- `是否含不可照写反例` 只统计不可照写的负向例子。
- `代码块身份` 只使用固定词表:`可直接照写示例``输出片段``反例 / 不可照写``配置片段 / 概念骨架`
- 如果还需要补充用途、限制或复用建议,单独写 `代码块说明`,不要把说明文字继续拼进 `代码块身份`
- 如果页头里的 `遇到不确定时` 列出多个目标,普通专题页默认第一项是优先入口;总入口页例外,必须先按任务路由分层。
## 证据规则
## 语法事实使用规则
- 页头元数据只做页面级粗判断;生成代码时以块级 `代码块身份` 为准。
- `可直接照写示例` 用于代码外形、语句顺序和块级结构。
- `输出片段` 只表示结果或错误形态。
- `反例 / 不可照写` 只用于避开错法,不反推新语法。
- `配置片段 / 概念骨架` 只表示结构提示,不代表可运行源码。
- 语法页不承载执行环境、账户体系、真实接口或验证命令。
- TSL 语法页面面向智能体生成代码;写成语法事实的内容就是生成依据,不再要求智能体自行证明。
- `可直接照写示例` 用于参考代码外形、语句顺序和块级结构。
- `输出片段` 只用于理解返回结果或错误形态,不作为代码照写。
- `反例 / 不可照写` 只用于避开对应写法,不反向推导新的语法。
- `配置片段 / 概念骨架` 只说明结构或配置位置,不代表可直接运行。
- 文档没有覆盖的写法不能生成;应向用户确认、记录文档缺口,或回到项目实际代码寻找证据。
- 执行环境细节不写进语法页;项目执行信息不能混入通用 TSL 事实。
## 停止条件
## 任务路由
| 任务 | 先读哪里 |
| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| 我要系统入门 TSL | [syntax/index.md](syntax/index.md) |
| 我要先核对语言核心事实 | [syntax/01_quickstart.md](syntax/01_quickstart.md) |
| 我要写最短可运行骨架 | [syntax/01_quickstart.md](syntax/01_quickstart.md) |
| 我要判断“这句语法能不能写” | [syntax/index.md](syntax/index.md) |
| 我要核对较新写法 / 新能力并入 / 资料冲突 / 解释器版本边界 | [syntax/index.md](syntax/index.md),再按主题跳到对应语法页 |
| 我要核对高频误写 / 反例 / 负向边界 | [syntax/11_pitfalls.md](syntax/11_pitfalls.md) |
| 我要查行情 / 财务 / 板块 / 选股等金融函数 | [reference/catalog/datawarehouse.md](reference/catalog/datawarehouse.md) |
| 我要用 Python 调 TSL 服务器函数或取金融数据 | [modules/pytsl_api.md](modules/pytsl_api.md) |
| 我要写回测框架 / 读取回测结果 | [modules/tsbacktesting.md](modules/tsbacktesting.md) |
| 我要看模块 / 集成 / 互操作入口 | [modules/index.md](modules/index.md) |
| 我要确认账户体系 / 真实接口 / 部署方式 / 脚本入口 / 环境变量 / CI / 验证命令 | 项目自身文档、`scripts/*` 入口脚本、CI 配置;有项目文档时再看 [toolchain.md](toolchain.md) |
| 我要查函数库 | [reference/index.md](reference/index.md) |
## 路由冲突处理
- 如果一个问题同时涉及业务和语法,先按主问题分层。
- 如果主问题是业务实现,先走 `modules/``reference/catalog/datawarehouse.md` 或项目实际接口文档,语法只作辅证,不反过来吞掉业务入口。
- 如果主问题是语言写法,先走 `syntax/`,金融或模块页只作为示例和上下文。
- 如果主问题已经落到真实接入参数、账号来源、部署依赖、执行入口或权限模型,直接转“项目依赖 / 项目执行”确认,不继续在 `modules/``syntax/` 或模板型 `toolchain.md` 里兜圈子。
## 通用 TSL 语法骨架路径
只有主问题是语言写法、最短骨架或语法有效性时,才从本节起手;如果主问题是模块集成、函数库查询或项目执行,先回到“任务路由”。
1. 先看 [syntax/01_quickstart.md](syntax/01_quickstart.md) 的语言核心事实和最短骨架。
2. 再按 [syntax/index.md](syntax/index.md) 进入命中的语法专题。
3. 涉及反例、常见误写或负向边界时,看 [syntax/11_pitfalls.md](syntax/11_pitfalls.md)。
## 智能体提交前最低自检
1. 是否已经判断主问题属于语法、函数库、模块/集成或项目执行。
2. 如果要生成代码,是否已经确认 `.tsl` / `.tsf` 文件模型。
3. 是否优先参考了 `代码块身份:可直接照写示例`
4. 是否避开了 `反例 / 不可照写`、输出片段和概念骨架。
5. 是否没有凭 Pascal、Python、JavaScript、TypeScript 或其它语言相似性补全 TSL 语法。
6. 是否没有把项目执行信息、账户体系、真实接口或验证命令写成通用 TSL 事实。
7. 仍不确定的地方是否明确说明,而不是隐藏在生成代码里。
- 代码外形缺少 `代码块身份:可直接照写示例`
- 无文档事实、文件模型不明或项目执行事实缺失。
- 需要复制反例、输出片段或概念骨架才能完成。
- 需要凭 Pascal、Python、JavaScript、TypeScript 或 SQL 直觉补语法。
- 项目执行信息会被写成通用 TSL 事实。
+8 -16
View File
@@ -4,9 +4,9 @@
是否可直接用于生成代码:仅部分
是否含可直接照写示例:否
是否含不可照写反例:否
遇到不确定时:[code_style.md](code_style.md)、[syntax/index.md](syntax/index.md)、[syntax/02_core_model.md](syntax/02_core_model.md)
遇到不确定时:命名对象不明看 [syntax/02_core_model.md](syntax/02_core_model.md);代码组织看 [code_style.md](code_style.md);语法事实看 [syntax/index.md](syntax/index.md)
本页记录本仓库/作者的命名偏好,不代表 TSL 语法事实。命名偏好与 Google C++ Style Guide 的实体形状思路对齐:通过名字的“形状”快速判断实体类型(类型/函数/变量/常量等),减少阅读成本。
本页记录本仓库/作者的命名偏好,不代表 TSL 语法事实。本页只规定命名后的实体如何取名,不承担文件模型、顶层声明、执行顺序等语法判断。命名偏好与 Google C++ Style Guide 的实体形状思路对齐:通过名字的“形状”快速判断实体类型(类型/函数/变量/常量等),减少阅读成本。
以下出现的 `<...>` 形式只表示命名或注释模板占位,不是源码字面量。
@@ -49,8 +49,7 @@
## 3. 类型命名(Type Names
AI 先按 `.tsl` 可执行脚本与 `.tsf` 模块/函数扩展判断文件模型。`.tsl` 里的语句区按顺序执行,函数/类声明区放在语句区之后;`.tsf` 用于可复用顶层声明并部署到解释器 `funcext`。本页只覆盖“需要命名的顶层实体”,不覆盖脚本语句本身;文件模型判断本身以
`docs/tsl/syntax/02_core_model.md` 为准。
文件模型和顶层声明规则以 `docs/tsl/syntax/02_core_model.md` 为准。本页只覆盖“需要命名的顶层实体”,不覆盖脚本语句本身
- **类与单元**使用
`PascalCase`,不带下划线;名称应为名词/名词短语(通常单数),避免动词开头。
@@ -65,20 +64,13 @@ AI 先按 `.tsl` 可执行脚本与 `.tsf` 模块/函数扩展判断文件模型
## 4. 文件命名与顶层声明(File Names)
TSL 的语法要求(仅 `.tsf`):每个 `.tsf`
文件只能有一个顶层声明,且**文件基名必须与该顶层声明名字一致**
文件模型、可写顶层声明、声明与文件关系以
`docs/tsl/syntax/02_core_model.md` 为准;本节只给已经确定要命名的文件/实体提供命名偏好
- 更可靠的判断方式仍然是先看顶层内容,而不是只看扩展名;命名偏好只是补充“命名后的实体如何取名”,不替代文件模型判断。
- 先用核心模型页判断目标是否存在需要命名的顶层实体;不要从本页反推
`.tsl` / `.tsf` 可写结构。
- 需要命名的顶层实体可以是 `function / procedure``type Name = class``unit`
- `.tsf` 代码文件:用于库/模块等“顶层声明”的首选承载文件;顶层声明可为
`function / procedure``type Name = class``unit`,文件基名需与之同名。
- `.tsl` 脚本文件:用于入口/编排层;允许直接写语句(如
`a := 1; echo a;`),也可能出现顶层 `function / procedure` 骨架
这类示例脚本外壳;如果同时出现脚本语句和函数/类声明,语句区在前,声明区在后;但风格上不把 `.tsl` 当成可复用顶层声明的默认落点,也不要求文件基名与函数名一致;可复用逻辑优先下沉到
`.tsf`(见 `docs/tsl/code_style.md`)。
- 注:`.tsf` 也是 TSL 源文件,命名/风格与 `.tsl` 遵循同一套规则。
- **硬规则(仅
`.tsf`)**:重命名顶层声明时必须同步重命名文件基名,否则语法/加载规则无法识别;批量重命名时也必须把这两处一起改掉。
- 批量重命名时,把文件基名和顶层实体名作为同一组维护,避免检索和协作断裂。
命名建议:
+25 -29
View File
@@ -23,32 +23,28 @@
| 分类 | 详情页 | 函数事实数 |
| ---------------------------- | ------------------------------------------------------------------------------ | ---------: |
| 常用日期时间函数 | [base/01_common_datetime.md](base/01_common_datetime.md) | 32 |
| 简单转换函数 | [base/02_simple_conversion.md](base/02_simple_conversion.md) | 2 |
| 普通日期函数 | [base/03_date_basic.md](base/03_date_basic.md) | 19 |
| 分解函数 | [base/04_datetime_parts.md](base/04_datetime_parts.md) | 9 |
| 起始结束函数 | [base/05_datetime_boundaries.md](base/05_datetime_boundaries.md) | 16 |
| 关系函数 | [base/06_datetime_relations.md](base/06_datetime_relations.md) | 28 |
| 范围判定函数 | [base/07_range_predicates.md](base/07_range_predicates.md) | 8 |
| 范围获得函数 | [base/08_range_getters.md](base/08_range_getters.md) | 8 |
| 范围生成函数 | [base/09_range_span.md](base/09_range_span.md) | 8 |
| 时间推移函数 | [base/10_time_shift.md](base/10_time_shift.md) | 8 |
| 组合、分解日期函数 | [base/11_compose_decompose_datetime.md](base/11_compose_decompose_datetime.md) | 11 |
| 日期重组函数 | [base/12_datetime_recode.md](base/12_datetime_recode.md) | 21 |
| 日期格式的转换 | [base/13_datetime_format_conversion.md](base/13_datetime_format_conversion.md) | 10 |
| 宽字节日期格式转换函数 | [base/14_wide_datetime_conversion.md](base/14_wide_datetime_conversion.md) | 6 |
| 常用字符串函数 | [base/15_string_common.md](base/15_string_common.md) | 69 |
| 判定函数 | [base/16_string_predicates.md](base/16_string_predicates.md) | 8 |
| 替换以及处理函数 | [base/17_string_replace_process.md](base/17_string_replace_process.md) | 8 |
| 字符串数组相关函数 | [base/18_string_array.md](base/18_string_array.md) | 2 |
| 重复函数 | [base/19_repeat.md](base/19_repeat.md) | 1 |
| 多字节语言支持函数 | [base/20_multibyte_language.md](base/20_multibyte_language.md) | 2 |
| 字节函数 | [base/21_byte.md](base/21_byte.md) | 8 |
| 发音相关函数 | [base/22_phonetic.md](base/22_phonetic.md) | 10 |
| 正则表达式函数 | [base/23_regex.md](base/23_regex.md) | 3 |
| 多语言支持函数 | [base/24_multilanguage.md](base/24_multilanguage.md) | 33 |
| 文件名以及目录名相关处理函数 | [base/25_path_filename.md](base/25_path_filename.md) | 18 |
| 基本 | [base/26_array_basic.md](base/26_array_basic.md) | 4 |
| 数组下标以及长度相关函数 | [base/27_array_index_length.md](base/27_array_index_length.md) | 7 |
| 排序函数 | [base/28_array_sort.md](base/28_array_sort.md) | 2 |
| 增删改查 | [base/29_array_crud.md](base/29_array_crud.md) | 6 |
| 重构函数 | [base/30_array_restructure.md](base/30_array_restructure.md) | 2 |
| 字符串数组与重复函数 | [base/17_string_array_and_repeat.md](base/17_string_array_and_repeat.md) | 3 |
| 普通日期函数 | [base/02_date_basic.md](base/02_date_basic.md) | 19 |
| 分解函数 | [base/03_datetime_parts.md](base/03_datetime_parts.md) | 9 |
| 起始结束函数 | [base/04_datetime_boundaries.md](base/04_datetime_boundaries.md) | 16 |
| 关系函数 | [base/05_datetime_relations.md](base/05_datetime_relations.md) | 28 |
| 范围判定函数 | [base/06_range_predicates.md](base/06_range_predicates.md) | 8 |
| 范围获得函数 | [base/07_range_getters.md](base/07_range_getters.md) | 8 |
| 范围生成函数 | [base/08_range_span.md](base/08_range_span.md) | 8 |
| 时间推移函数 | [base/09_time_shift.md](base/09_time_shift.md) | 8 |
| 组合、分解日期函数 | [base/10_compose_decompose_datetime.md](base/10_compose_decompose_datetime.md) | 11 |
| 日期重组函数 | [base/11_datetime_recode.md](base/11_datetime_recode.md) | 21 |
| 日期格式的转换 | [base/12_datetime_format_conversion.md](base/12_datetime_format_conversion.md) | 10 |
| 宽字节日期格式转换函数 | [base/13_wide_datetime_conversion.md](base/13_wide_datetime_conversion.md) | 6 |
| 数组排序与重构 | [base/25_array_sort_and_operations.md](base/25_array_sort_and_operations.md) | 4 |
| 常用字符串函数 | [base/14_string_common.md](base/14_string_common.md) | 69 |
| 判定函数 | [base/15_string_predicates.md](base/15_string_predicates.md) | 8 |
| 替换以及处理函数 | [base/16_string_replace_process.md](base/16_string_replace_process.md) | 8 |
| 字节函数 | [base/18_byte.md](base/18_byte.md) | 8 |
| 发音相关函数 | [base/19_phonetic.md](base/19_phonetic.md) | 10 |
| 正则表达式函数 | [base/20_regex.md](base/20_regex.md) | 3 |
| 多语言支持函数 | [base/21_multilanguage.md](base/21_multilanguage.md) | 33 |
| 文件名以及目录名相关处理函数 | [base/22_path_filename.md](base/22_path_filename.md) | 18 |
| 基本 | [base/23_array_basic.md](base/23_array_basic.md) | 4 |
| 数组下标以及长度相关函数 | [base/24_array_index_length.md](base/24_array_index_length.md) | 7 |
| 增删改查 | [base/26_array_crud.md](base/26_array_crud.md) | 6 |
@@ -230,3 +230,27 @@
| -------- | ------- | ---- | -------- | -------------------- |
| 1 | `aday` | 是 | 整数 | 按源文档示例顺序传入 |
| 2 | `today` | 是 | 整数 | 按源文档示例顺序传入 |
## 简单转换函数
### `dateToInt(value)`
用途:日期时间处理函数。
参数个数:1
返回值:日期或时间值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | -------------------- |
| 1 | `value` | 是 | 整数 | 按源文档示例顺序传入 |
### `intToDate(value)`
用途:日期时间处理函数。
参数个数:1
返回值:日期或时间值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | -------------------- |
| 1 | `value` | 是 | 整数 | 按源文档示例顺序传入 |
@@ -1,29 +0,0 @@
# 基础函数 - 简单转换函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../base.md](../base.md)、[../../index.md](../../index.md)
## 简单转换函数
### `dateToInt(value)`
用途:日期时间处理函数。
参数个数:1
返回值:日期或时间值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | -------------------- |
| 1 | `value` | 是 | 整数 | 按源文档示例顺序传入 |
### `intToDate(value)`
用途:日期时间处理函数。
参数个数:1
返回值:日期或时间值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | -------------------- |
| 1 | `value` | 是 | 整数 | 按源文档示例顺序传入 |
@@ -1,4 +1,4 @@
# 基础函数 - 字符串数组相关函数
# 基础函数 - 字符串数组与重复函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
@@ -29,3 +29,17 @@
| -------- | --------- | ---- | -------- | -------------------- |
| 1 | `eg_str` | 是 | 字符串 | 按源文档示例顺序传入 |
| 2 | `str_arr` | 是 | 字符串 | 按源文档示例顺序传入 |
## 重复函数
### `dupeString(value, arg2)`
用途:字符串相关函数。
参数个数:2
返回值:字符串
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | -------------------- |
| 1 | `value` | 是 | 字符串 | 按源文档示例顺序传入 |
| 2 | `arg2` | 是 | 整数 | 按源文档示例顺序传入 |
@@ -1,19 +0,0 @@
# 基础函数 - 重复函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../base.md](../base.md)、[../../index.md](../../index.md)
## 重复函数
### `dupeString(value, arg2)`
用途:字符串相关函数。
参数个数:2
返回值:字符串
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | -------------------- |
| 1 | `value` | 是 | 字符串 | 按源文档示例顺序传入 |
| 2 | `arg2` | 是 | 整数 | 按源文档示例顺序传入 |
@@ -1,31 +0,0 @@
# 基础函数 - 多字节语言支持函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../base.md](../base.md)、[../../index.md](../../index.md)
## 多字节语言支持函数
### `lengthW(test_str)`
用途:字符串相关函数。
参数个数:1
返回值:整数
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ---------- | ---- | -------- | -------------------- |
| 1 | `test_str` | 是 | 字符串 | 按源文档示例顺序传入 |
### `midStr(test_str, arg2, arg3)`
用途:字符串相关函数。
参数个数:3
返回值:字符串
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ---------- | ---- | -------- | -------------------- |
| 1 | `test_str` | 是 | 字符串 | 按源文档示例顺序传入 |
| 2 | `arg2` | 是 | 整数 | 按源文档示例顺序传入 |
| 3 | `arg3` | 是 | 整数 | 按源文档示例顺序传入 |
@@ -381,3 +381,29 @@
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | -------------------- |
| 1 | `s` | 是 | 数组 | 按源文档示例顺序传入 |
## 多字节语言支持函数(补充)
### `lengthW(test_str)`
用途:字符串相关函数。
参数个数:1
返回值:整数
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ---------- | ---- | -------- | -------------------- |
| 1 | `test_str` | 是 | 字符串 | 按源文档示例顺序传入 |
### `midStr(test_str, arg2, arg3)`
用途:字符串相关函数。
参数个数:3
返回值:字符串
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ---------- | ---- | -------- | -------------------- |
| 1 | `test_str` | 是 | 字符串 | 按源文档示例顺序传入 |
| 2 | `arg2` | 是 | 整数 | 按源文档示例顺序传入 |
| 3 | `arg3` | 是 | 整数 | 按源文档示例顺序传入 |
@@ -1,9 +1,35 @@
# 基础函数 - 重构函数
# 基础函数 - 数组排序与重构函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../base.md](../base.md)、[../../index.md](../../index.md)
## 排序函数
### `sortArray(arr)`
用途:排序函数相关函数。
参数个数:1
返回值:处理结果
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | -------------------- |
| 1 | `arr` | 是 | 数组 | 按源文档示例顺序传入 |
### `sortTableByField(arr, arg2, arg3)`
用途:排序函数相关函数。
参数个数:3
返回值:处理结果
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | -------------------- |
| 1 | `arr` | 是 | 数组 | 按源文档示例顺序传入 |
| 2 | `arg2` | 是 | 字符串 | 按源文档示例顺序传入 |
| 3 | `arg3` | 是 | 整数 | 按源文档示例顺序传入 |
## 重构函数
### `reIndex(a, arg2[, s])`
@@ -28,6 +54,6 @@
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | -------------------- |
| 1 | `a` | 是 | 组 | 按源文档示例顺序传入 |
| 1 | `a` | 是 | 组 | 按源文档示例顺序传入 |
| 2 | `arg2` | 否 | 整数 | 按源文档示例顺序传入 |
| 3 | `arg3` | 否 | 整数 | 按源文档示例顺序传入 |
@@ -1,31 +0,0 @@
# 基础函数 - 排序函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../base.md](../base.md)、[../../index.md](../../index.md)
## 排序函数
### `sortArray(arr)`
用途:排序函数相关函数。
参数个数:1
返回值:处理结果
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | -------------------- |
| 1 | `arr` | 是 | 数组 | 按源文档示例顺序传入 |
### `sortTableByField(arr, arg2, arg3)`
用途:排序函数相关函数。
参数个数:3
返回值:处理结果
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | -------------------- |
| 1 | `arr` | 是 | 数组 | 按源文档示例顺序传入 |
| 2 | `arg2` | 是 | 字符串 | 按源文档示例顺序传入 |
| 3 | `arg3` | 是 | 整数 | 按源文档示例顺序传入 |
+24 -31
View File
@@ -23,34 +23,27 @@
| 分类 | 详情页 | 函数事实数 |
| -------------------------- | -------------------------------------------------------------------------------------------------------- | ---------: |
| 系统参数 | [datawarehouse/01_system_param_keys.md](datawarehouse/01_system_param_keys.md) | 1 |
| 系统参数名称函数 | [datawarehouse/02_system_param_names.md](datawarehouse/02_system_param_names.md) | 17 |
| 多市场支撑函数 | [datawarehouse/03_multi_market.md](datawarehouse/03_multi_market.md) | 5 |
| 时间相关函数 | [datawarehouse/04_time.md](datawarehouse/04_time.md) | 4 |
| 判定函数 | [datawarehouse/05_predicates.md](datawarehouse/05_predicates.md) | 14 |
| 盘中相关 | [datawarehouse/06_intraday.md](datawarehouse/06_intraday.md) | 1 |
| 盘后相关(在当日可用于盘中) | [datawarehouse/07_after_close_intraday_available.md](datawarehouse/07_after_close_intraday_available.md) | 63 |
| 时间序列统计 | [datawarehouse/08_time_series_stats.md](datawarehouse/08_time_series_stats.md) | 40 |
| 成交明细数据函数 | [datawarehouse/09_transaction_detail_data.md](datawarehouse/09_transaction_detail_data.md) | 9 |
| 交易明细字段标识函数 | [datawarehouse/10_transaction_detail_fields.md](datawarehouse/10_transaction_detail_fields.md) | 28 |
| 查询和轮询函数 | [datawarehouse/11_query_polling.md](datawarehouse/11_query_polling.md) | 1 |
| 市场和板块函数 | [datawarehouse/12_market_sector.md](datawarehouse/12_market_sector.md) | 5 |
| 取行情数据序列函数 | [datawarehouse/13_quote_series.md](datawarehouse/13_quote_series.md) | 3 |
| 引用指定函数 | [datawarehouse/14_reference_functions.md](datawarehouse/14_reference_functions.md) | 4 |
| 系统参数设置和获取函数 | [datawarehouse/15_sys_param_access.md](datawarehouse/15_sys_param_access.md) | 4 |
| 复权类型函数 | [datawarehouse/16_reinstatement_types.md](datawarehouse/16_reinstatement_types.md) | 3 |
| 复权基准日函数 | [datawarehouse/17_reinstatement_base_date.md](datawarehouse/17_reinstatement_base_date.md) | 2 |
| 周期函数 | [datawarehouse/18_cycle.md](datawarehouse/18_cycle.md) | 34 |
| 财务函数 | [datawarehouse/19_financial.md](datawarehouse/19_financial.md) | 18 |
| 选股与取数 | [datawarehouse/20_selection_and_fetch.md](datawarehouse/20_selection_and_fetch.md) | 6 |
| 向导函数 | [datawarehouse/21_wizard.md](datawarehouse/21_wizard.md) | 22 |
| 向导函数 / N | [datawarehouse/22_wizard_n_periods.md](datawarehouse/22_wizard_n_periods.md) | 18 |
| 向导函数 / N日 | [datawarehouse/23_wizard_n_days.md](datawarehouse/23_wizard_n_days.md) | 38 |
| 向导函数 / N日 / 中间函数 | [datawarehouse/24_wizard_n_days_intermediate.md](datawarehouse/24_wizard_n_days_intermediate.md) | 2 |
| 向导函数 / 历史遗留 | [datawarehouse/25_wizard_legacy.md](datawarehouse/25_wizard_legacy.md) | 2 |
| 向导函数 / 区间 | [datawarehouse/26_wizard_range.md](datawarehouse/26_wizard_range.md) | 32 |
| 向导函数 / 中间函数 | [datawarehouse/27_wizard_intermediate.md](datawarehouse/27_wizard_intermediate.md) | 8 |
| 向导函数 / N季 | [datawarehouse/28_wizard_n_quarters.md](datawarehouse/28_wizard_n_quarters.md) | 6 |
| 向导函数 / 当日 | [datawarehouse/29_wizard_today.md](datawarehouse/29_wizard_today.md) | 16 |
| 向导函数 / 当日 / 中间函数 | [datawarehouse/30_wizard_today_intermediate.md](datawarehouse/30_wizard_today_intermediate.md) | 7 |
| 条件判定 | [datawarehouse/31_condition_predicates.md](datawarehouse/31_condition_predicates.md) | 1 |
| 系统参数名称函数 | [datawarehouse/01_system_param_names.md](datawarehouse/01_system_param_names.md) | 17 |
| 多市场支撑函数 | [datawarehouse/02_multi_market.md](datawarehouse/02_multi_market.md) | 5 |
| 日内数据与收盘后可用 | [datawarehouse/05_intraday_and_after_close.md](datawarehouse/05_intraday_and_after_close.md) | 2 |
| 时间相关函数 | [datawarehouse/03_time.md](datawarehouse/03_time.md) | 4 |
| 判定函数 | [datawarehouse/04_predicates.md](datawarehouse/04_predicates.md) | 14 |
| 时间序列统计 | [datawarehouse/06_time_series_stats.md](datawarehouse/06_time_series_stats.md) | 40 |
| 成交明细数据函数 | [datawarehouse/07_transaction_detail_data.md](datawarehouse/07_transaction_detail_data.md) | 9 |
| 交易明细字段标识函数 | [datawarehouse/08_transaction_detail_fields.md](datawarehouse/08_transaction_detail_fields.md) | 28 |
| 市场和板块函数 | [datawarehouse/09_market_sector.md](datawarehouse/09_market_sector.md) | 5 |
| 取行情数据序列函数 | [datawarehouse/10_quote_series.md](datawarehouse/10_quote_series.md) | 3 |
| 引用指定函数 | [datawarehouse/11_reference_functions.md](datawarehouse/11_reference_functions.md) | 4 |
| 系统参数设置和获取函数 | [datawarehouse/12_sys_param_access.md](datawarehouse/12_sys_param_access.md) | 4 |
| 复权相关 | [datawarehouse/13_reinstatement.md](datawarehouse/13_reinstatement.md) | 5 |
| 周期函数 | [datawarehouse/14_cycle.md](datawarehouse/14_cycle.md) | 34 |
| 财务函数 | [datawarehouse/15_financial.md](datawarehouse/15_financial.md) | 18 |
| 选股与取数 | [datawarehouse/16_selection_and_fetch.md](datawarehouse/16_selection_and_fetch.md) | 6 |
| 向导函数 | [datawarehouse/17_wizard.md](datawarehouse/17_wizard.md) | 22 |
| 向导函数 / N期 | [datawarehouse/18_wizard_n_periods.md](datawarehouse/18_wizard_n_periods.md) | 18 |
| 向导函数 / N日 | [datawarehouse/19_wizard_n_days.md](datawarehouse/19_wizard_n_days.md) | 38 |
| 向导函数 / 区间 | [datawarehouse/20_wizard_range.md](datawarehouse/20_wizard_range.md) | 32 |
| 向导函数 / 中间函数 | [datawarehouse/21_wizard_intermediate.md](datawarehouse/21_wizard_intermediate.md) | 8 |
| 向导函数 / N | [datawarehouse/22_wizard_n_quarters.md](datawarehouse/22_wizard_n_quarters.md) | 6 |
| 向导函数 / 当日 | [datawarehouse/23_wizard_today.md](datawarehouse/23_wizard_today.md) | 16 |
| 向导函数 / 日 / 中间函数 | [datawarehouse/24_wizard_today_intermediate.md](datawarehouse/24_wizard_today_intermediate.md) | 7 |
@@ -1,18 +0,0 @@
# 数据仓库金融函数 - 系统参数键
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 系统参数键
### `cyclefilter`
用途:设置周期过滤器以及集合竞价分离器。它是系统参数键,不是函数调用。
参数个数:不适用
返回值:不适用
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | ------------------------------------------------------------------------------------------------------------- |
| 1 | `value` | 是 | 整数 | 通过 `setSysParam("cyclefilter", value)` 设置;`0` 取消过滤,`1` 过滤期货放假期间夜盘,`3` 新增集合竞价周期点 |
@@ -161,3 +161,21 @@
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | -------------------------------------------- |
| 1 | `arg1` | 是 | 整数 | 按源文档示例顺序传入;示例参数形态为 `46002` |
# 数据仓库金融函数 - 条件判定
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 条件判定
### `isTimePeriodInfoId(arg1)`
用途:条件判定相关函数。
参数个数:1
返回值:布尔值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | --------------------------------------------- |
| 1 | `arg1` | 是 | 整数 | 按源文档示例顺序传入;示例参数形态为 `150003` |
@@ -1,3 +1,21 @@
# 数据仓库金融函数 - 日内数据
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 盘中相关
### `rd(arg1)`
用途:盘中相关相关函数。
参数个数:1
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | ---------------------------------------- |
| 1 | `arg1` | 是 | 整数 | 按源文档示例顺序传入;示例参数形态为 `0` |
# 数据仓库金融函数 - 盘后相关(在当日可用于盘中)
文档类型:函数事实页
@@ -1,18 +0,0 @@
# 数据仓库金融函数 - 盘中相关
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 盘中相关
### `rd(arg1)`
用途:盘中相关相关函数。
参数个数:1
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | ---------------------------------------- |
| 1 | `arg1` | 是 | 整数 | 按源文档示例顺序传入;示例参数形态为 `0` |
@@ -1,27 +0,0 @@
# 数据仓库金融函数 - 查询和轮询函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 查询和轮询函数
### `query(arg1, stock_id_2, arg3, arg4, arg5, stock_id_6, arg7, stock_id_8, arg9, arg10)`
用途:查询和轮询函数相关函数。
参数个数:10
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | -------- | ------------------------------------------------------------------- |
| 1 | `arg1` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'上证A股;创业板'` |
| 2 | `stock_id_2` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'SZ000001;SZ000002;SZ000997'` |
| 3 | `arg3` | 是 | 任意值 | 按源文档示例顺序传入;示例参数形态为 `close() > ma(close(), 10)` |
| 4 | `arg4` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `''` |
| 5 | `arg5` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'证券代码'` |
| 6 | `stock_id_6` | 是 | 任意值 | 按源文档示例顺序传入;示例参数形态为 `DefaultStockID()` |
| 7 | `arg7` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'证券名称'` |
| 8 | `stock_id_8` | 是 | 任意值 | 按源文档示例顺序传入;示例参数形态为 `CurrentStockName()` |
| 9 | `arg9` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'收盘价'` |
| 10 | `arg10` | 是 | 任意值 | 按源文档示例顺序传入;示例参数形态为 `close()` |
@@ -51,3 +51,16 @@
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ---------- | ---- | -------- | ------------------------------------------------- |
| 1 | `stock_id` | 是 | 任意值 | 按源文档示例顺序传入;示例参数形态为 `pn_stock()` |
## 系统参数键
### `cyclefilter`
用途:设置周期过滤器以及集合竞价分离器。它是系统参数键,不是函数调用。
参数个数:不适用
返回值:不适用
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | ------------------------------------------------------------------------------------------------------------- |
| 1 | `value` | 是 | 整数 | 通过 `setSysParam("cyclefilter", value)` 设置;`0` 取消过滤,`1` 过滤期货放假期间夜盘,`3` 新增集合竞价周期点 |
@@ -1,4 +1,4 @@
# 数据仓库金融函数 - 复权类型函数
# 数据仓库金融函数 - 复权相关
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
@@ -35,3 +35,30 @@
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | ---- |
# 数据仓库金融函数 - 复权基准日函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 复权基准日函数
### `rd_lastday()`
用途:复权基准日函数相关函数。
参数个数:0
返回值:常量值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | ---- |
### `rd_firstday()`
用途:复权基准日函数相关函数。
参数个数:0
返回值:常量值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | ---- |
@@ -102,3 +102,30 @@
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | -------------------------------------------- |
| 1 | `arg1` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'1+3'` |
# 数据仓库金融函数 - 查询和轮询函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 查询和轮询函数
### `query(arg1, stock_id_2, arg3, arg4, arg5, stock_id_6, arg7, stock_id_8, arg9, arg10)`
用途:查询和轮询函数相关函数。
参数个数:10
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | -------- | ------------------------------------------------------------------- |
| 1 | `arg1` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'上证A股;创业板'` |
| 2 | `stock_id_2` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'SZ000001;SZ000002;SZ000997'` |
| 3 | `arg3` | 是 | 任意值 | 按源文档示例顺序传入;示例参数形态为 `close() > ma(close(), 10)` |
| 4 | `arg4` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `''` |
| 5 | `arg5` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'证券代码'` |
| 6 | `stock_id_6` | 是 | 任意值 | 按源文档示例顺序传入;示例参数形态为 `DefaultStockID()` |
| 7 | `arg7` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'证券名称'` |
| 8 | `stock_id_8` | 是 | 任意值 | 按源文档示例顺序传入;示例参数形态为 `CurrentStockName()` |
| 9 | `arg9` | 是 | 字符串 | 按源文档示例顺序传入;示例参数形态为 `'收盘价'` |
| 10 | `arg10` | 是 | 任意值 | 按源文档示例顺序传入;示例参数形态为 `close()` |
@@ -1,27 +0,0 @@
# 数据仓库金融函数 - 复权基准日函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 复权基准日函数
### `rd_lastday()`
用途:复权基准日函数相关函数。
参数个数:0
返回值:常量值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | ---- |
### `rd_firstday()`
用途:复权基准日函数相关函数。
参数个数:0
返回值:常量值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | ---- |
@@ -105,3 +105,62 @@
| 1 | `expression` | 是 | 表达式对象 | 按源文档示例顺序传入;示例参数形态为 `@close()` |
| 2 | `date_value_2` | 是 | 日期或时间值 | 按源文档示例顺序传入;示例参数形态为 `20230101T` |
| 3 | `date_value_3` | 是 | 日期或时间值 | 按源文档示例顺序传入;示例参数形态为 `20230110T` |
# 数据仓库金融函数 - 向导函数 / N日 / 中间函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 向导函数 / N日 / 中间函数
### `getExpCaceStr(expression)`
用途:向导函数相关函数。
参数个数:1
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | ---------- | ----------------------------------------------- |
| 1 | `expression` | 是 | 表达式对象 | 按源文档示例顺序传入;示例参数形态为 `@close()` |
### `techCal_unit(expression)`
用途:向导函数相关函数。
参数个数:1
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | ---------- | ----------------------------------------------- |
| 1 | `expression` | 是 | 表达式对象 | 按源文档示例顺序传入;示例参数形态为 `@close()` |
# 数据仓库金融函数 - 向导函数 / 历史遗留
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 向导函数 / 历史遗留
### `sumOfSectorExceptNoTrade(expression)`
用途:进行数值统计计算。
参数个数:1
返回值:处理后的结果值。
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | ---------- | ----------------------------------------------- |
| 1 | `expression` | 是 | 表达式对象 | 按源文档示例顺序传入;示例参数形态为 `@close()` |
### `avgOfSectorExceptNoTrade(expression, arg2)`
用途:进行数值统计计算。
参数个数:2
返回值:处理后的结果值。
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | ---------- | ----------------------------------------------- |
| 1 | `expression` | 是 | 表达式对象 | 按源文档示例顺序传入;示例参数形态为 `@close()` |
| 2 | `arg2` | 是 | 整数 | 按源文档示例顺序传入;示例参数形态为 `0` |
@@ -1,29 +0,0 @@
# 数据仓库金融函数 - 向导函数 / N日 / 中间函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 向导函数 / N日 / 中间函数
### `getExpCaceStr(expression)`
用途:向导函数相关函数。
参数个数:1
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | ---------- | ----------------------------------------------- |
| 1 | `expression` | 是 | 表达式对象 | 按源文档示例顺序传入;示例参数形态为 `@close()` |
### `techCal_unit(expression)`
用途:向导函数相关函数。
参数个数:1
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | ---------- | ----------------------------------------------- |
| 1 | `expression` | 是 | 表达式对象 | 按源文档示例顺序传入;示例参数形态为 `@close()` |
@@ -1,30 +0,0 @@
# 数据仓库金融函数 - 向导函数 / 历史遗留
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 向导函数 / 历史遗留
### `sumOfSectorExceptNoTrade(expression)`
用途:进行数值统计计算。
参数个数:1
返回值:处理后的结果值。
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | ---------- | ----------------------------------------------- |
| 1 | `expression` | 是 | 表达式对象 | 按源文档示例顺序传入;示例参数形态为 `@close()` |
### `avgOfSectorExceptNoTrade(expression, arg2)`
用途:进行数值统计计算。
参数个数:2
返回值:处理后的结果值。
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------ | ---- | ---------- | ----------------------------------------------- |
| 1 | `expression` | 是 | 表达式对象 | 按源文档示例顺序传入;示例参数形态为 `@close()` |
| 2 | `arg2` | 是 | 整数 | 按源文档示例顺序传入;示例参数形态为 `0` |
@@ -1,18 +0,0 @@
# 数据仓库金融函数 - 条件判定
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../datawarehouse.md](../datawarehouse.md)、[../../index.md](../../index.md)
## 条件判定
### `isTimePeriodInfoId(arg1)`
用途:条件判定相关函数。
参数个数:1
返回值:布尔值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | --------------------------------------------- |
| 1 | `arg1` | 是 | 整数 | 按源文档示例顺序传入;示例参数形态为 `150003` |
+2 -3
View File
@@ -28,6 +28,5 @@
| 文件读写类型函数 | [resource/04_file_rw_types.md](resource/04_file_rw_types.md) | 7 |
| 网络访问以及相关函数 | [resource/05_network.md](resource/05_network.md) | 9 |
| INI文件处理函数 | [resource/06_ini.md](resource/06_ini.md) | 23 |
| 宽字节处理函数 | [resource/07_wide_byte.md](resource/07_wide_byte.md) | 1 |
| 进程相关函数 | [resource/08_process.md](resource/08_process.md) | 44 |
| 本地资源相关函数 | [resource/09_local_resource.md](resource/09_local_resource.md) | 8 |
| 进程相关函数 | [resource/07_process.md](resource/07_process.md) | 44 |
| 本地资源相关函数 | [resource/08_local_resource.md](resource/08_local_resource.md) | 8 |
@@ -386,3 +386,20 @@
| 3 | `arg3` | 是 | 字符串 | 按源文档示例顺序传入 |
| 4 | `lj1` | 是 | 任意值 | 按源文档示例顺序传入 |
| 5 | `arg5` | 否 | 整数 | 按源文档示例顺序传入 |
# 资源访问函数 - 宽字节处理函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../resource.md](../resource.md)、[../../index.md](../../index.md)
## 宽字节处理函数
### `iniReadSectionsw()`
用途:INI文件处理函数相关函数。
参数个数:0
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | ---- |
@@ -1,17 +0,0 @@
# 资源访问函数 - 宽字节处理函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../resource.md](../resource.md)、[../../index.md](../../index.md)
## 宽字节处理函数
### `iniReadSectionsw()`
用途:INI文件处理函数相关函数。
参数个数:0
返回值:处理后的结果值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | ---- |
+4 -8
View File
@@ -24,11 +24,7 @@
| ---------------- | ------------------------------------------------------------ | ---------: |
| 数据类型函数 | [system/01_data_type.md](system/01_data_type.md) | 27 |
| 数据类型转换函数 | [system/02_type_conversion.md](system/02_type_conversion.md) | 13 |
| 复制函数 | [system/03_copy.md](system/03_copy.md) | 1 |
| 全局缓存函数 | [system/04_global_cache.md](system/04_global_cache.md) | 4 |
| 随机函数 | [system/05_random.md](system/05_random.md) | 3 |
| 条件选择函数 | [system/06_conditional.md](system/06_conditional.md) | 1 |
| 表达式相关函数 | [system/07_expression.md](system/07_expression.md) | 5 |
| 性能优化相关函数 | [system/08_profiler.md](system/08_profiler.md) | 2 |
| 函数库路径 | [system/09_tsl_lib_path.md](system/09_tsl_lib_path.md) | 3 |
| 错误与断言函数 | [system/10_error_assertion.md](system/10_error_assertion.md) | 1 |
| 全局缓存函数 | [system/03_global_cache.md](system/03_global_cache.md) | 4 |
| 随机函数 | [system/04_random.md](system/04_random.md) | 3 |
| 表达式相关函数 | [system/05_expression.md](system/05_expression.md) | 5 |
| 函数库路径 | [system/06_tsl_lib_path.md](system/06_tsl_lib_path.md) | 3 |
@@ -333,3 +333,41 @@
| -------- | ----------- | ---- | -------- | ------------- |
| 1 | `buffer` | 是 | 任意值 | Binary Buffer |
| 2 | `type_name` | 是 | 字符串 | 类型名称 |
# 系统相关函数 - 复制函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../system.md](../system.md)、[../../index.md](../../index.md)
## 复制函数
### `dupValue(value)`
用途:复制值,避免被调用函数修改原变量。
参数个数:1
返回值:复制后的值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | ------ |
| 1 | `value` | 是 | 整数 | 输入值 |
# 系统相关函数 - 条件选择函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../system.md](../system.md)、[../../index.md](../../index.md)
## 条件选择函数
### `ifThen(condition, true_value, false_value)`
用途:条件成立返回 true_value,否则返回 false_value。
参数个数:3
返回值:true_value 或 false_value
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------- | ---- | -------- | ------------------ |
| 1 | `condition` | 是 | 整数 | 判断条件 |
| 2 | `true_value` | 是 | 整数 | 条件成立时返回值 |
| 3 | `false_value` | 是 | 整数 | 条件不成立时返回值 |
@@ -1,18 +0,0 @@
# 系统相关函数 - 复制函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../system.md](../system.md)、[../../index.md](../../index.md)
## 复制函数
### `dupValue(value)`
用途:复制值,避免被调用函数修改原变量。
参数个数:1
返回值:复制后的值
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | ------ |
| 1 | `value` | 是 | 整数 | 输入值 |
@@ -1,20 +0,0 @@
# 系统相关函数 - 条件选择函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../system.md](../system.md)、[../../index.md](../../index.md)
## 条件选择函数
### `ifThen(condition, true_value, false_value)`
用途:条件成立返回 true_value,否则返回 false_value。
参数个数:3
返回值:true_value 或 false_value
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------------- | ---- | -------- | ------------------ |
| 1 | `condition` | 是 | 整数 | 判断条件 |
| 2 | `true_value` | 是 | 整数 | 条件成立时返回值 |
| 3 | `false_value` | 是 | 整数 | 条件不成立时返回值 |
@@ -1,4 +1,4 @@
# 系统相关函数 - 错误与断言函数
# 系统相关函数 - 错误处理与性能分析
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
@@ -25,3 +25,32 @@
- 真值示例:`1``true``-1``0.5``"abc"``array(1)`;通过时返回 `0`
- 假值示例:`0``false``nil``""``array()`;失败时直接抛出 `error_message`
- 断言失败不会把错误信息作为普通返回值交给调用方继续执行。
# 系统相关函数 - 性能优化相关函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../system.md](../system.md)、[../../index.md](../../index.md)
## 性能优化相关函数
### `setProfiler(flags)`
用途:设置性能分析开关与统计范围。
参数个数:1
返回值:无
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | -------------- |
| 1 | `flags` | 是 | 整数 | 统计选项位掩码 |
### `getProfilerInfo(mode)`
用途:获取性能分析信息。
参数个数:1
返回值:性能分析信息
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | --------------------------- |
| 1 | `mode` | 是 | 整数 | 可选;传 1 仅返回信息不弹窗 |
@@ -1,29 +0,0 @@
# 系统相关函数 - 性能优化相关函数
文档类型:函数事实页
是否可直接用于生成代码:是;本页函数条目均包含参数表
遇到不确定时:回到 [../system.md](../system.md)、[../../index.md](../../index.md)
## 性能优化相关函数
### `setProfiler(flags)`
用途:设置性能分析开关与统计范围。
参数个数:1
返回值:无
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------- | ---- | -------- | -------------- |
| 1 | `flags` | 是 | 整数 | 统计选项位掩码 |
### `getProfilerInfo(mode)`
用途:获取性能分析信息。
参数个数:1
返回值:性能分析信息
| 参数位置 | 参数名 | 必填 | 接收类型 | 说明 |
| -------- | ------ | ---- | -------- | --------------------------- |
| 1 | `mode` | 是 | 整数 | 可选;传 1 仅返回信息不弹窗 |
+218
View File
@@ -0,0 +1,218 @@
{
"version": "2.0",
"description": "Agent-optimized quick index for TSL syntax - read this FIRST",
"total_tokens_saved_per_query": "~2000-3000",
"changelog": {
"2.0": "Extended coverage from 7 to 14 scenarios, added understand_code and optimize_code decision paths",
"1.0": "Initial version with 7 high-frequency scenarios"
},
"intent_to_file": {
"hello_world": {
"file": "01_quickstart.md",
"line": 182,
"token_cost": 50,
"example": "echo \"hello\";"
},
"function_basic": {
"file": "05_functions_and_calls.md",
"line": 103,
"token_cost": 100,
"example": "function Add(a, b);\nbegin\n return a + b;\nend;"
},
"function_in_tsl": {
"file": "05_functions_and_calls.md",
"line": 82,
"token_cost": 150,
"example": "a := 1;\ntest();\n\nfunction test();\nbegin\n echo \"test\";\nend;"
},
"procedure": {
"file": "05_functions_and_calls.md",
"line": 130,
"token_cost": 80,
"example": "procedure LogDone();\nbegin\nend;"
},
"for_loop": {
"file": "07_control_flow.md",
"line": 89,
"token_cost": 100,
"example": "for i := 0 to 2 do\n sum := sum + i;"
},
"while_loop": {
"file": "07_control_flow.md",
"line": 64,
"token_cost": 100,
"example": "counter := 0;\nwhile counter < 3 do\n counter := counter + 1;"
},
"if_condition": {
"file": "07_control_flow.md",
"line": 54,
"token_cost": 120,
"example": "if flag > 0 then\nbegin\n value := 1;\nend"
},
"assignment": {
"file": "06_expressions_and_operators.md",
"line": 136,
"token_cost": 60,
"example": "a := 1;"
},
"variable_declaration": {
"file": "04_variables_and_constants.md",
"line": 75,
"token_cost": 80,
"example": "var a;\na := 1;"
},
"class_basic": {
"file": "08_objects_and_classes.md",
"line": 98,
"token_cost": 200,
"example": "type Person = class\npublic\n name;\nend;"
},
"class_in_tsl": {
"file": "08_objects_and_classes.md",
"line": 118,
"token_cost": 250,
"example": "obj := new MyClass();\nobj.value := 5;\n\ntype MyClass = class\npublic\n value;\nend;"
},
"unit_import": {
"file": "09_units_and_scope.md",
"line": 141,
"token_cost": 60,
"example": "uses DemoUnit;"
},
"unit_skeleton": {
"file": "09_units_and_scope.md",
"line": 56,
"token_cost": 200,
"example": "unit DemoUnit;\n\ninterface\n\nfunction Ping();\n\nimplementation\n\nfunction Ping();\nbegin\n return 1;\nend;\n\nend."
},
"array_operations": {
"file": "12_matrix_and_collections.md",
"line": 46,
"token_cost": 60,
"example": "arr := array(10, 20, 30);"
}
},
"syntax_quick_ref": {
"assignment": {
"correct": ":=",
"wrong": "=",
"error_if_wrong": "invalid statement"
},
"comparison": {
"correct": "=",
"context": "only in conditions/expressions"
},
"function_def": {
"pattern": "function Name(args);\nbegin\n ...\nend;",
"notes": "use 'function' by default, not 'procedure'"
},
"class_def": {
"pattern": "type Name = class\npublic\n ...\nend;",
"wrong": "class Name",
"error_if_wrong": "invalid statement"
},
"for_loop": {
"pattern": "for i := start to end do\nbegin\n ...\nend;"
},
"if_statement": {
"pattern": "if condition then\nbegin\n ...\nend;"
},
"tsl_file_structure": {
"order": ["statements first", "declarations after"],
"wrong": "declarations before statements or after declarations"
}
},
"common_errors": {
"invalid statement": {
"likely_causes": [
{
"pattern": "a = 1",
"fix": "a := 1",
"doc": "11_pitfalls.md",
"line": 45
},
{
"pattern": "class Person",
"fix": "type Person = class",
"doc": "11_pitfalls.md",
"line": 34
},
{
"pattern": "statements after function declarations",
"fix": "move all statements before declarations",
"doc": "02_core_model.md",
"line": 34
}
]
},
"compile error": {
"check": "11_pitfalls.md for common syntax mistakes"
}
},
"decision_tree": {
"task_type": {
"write_new_code": {
"simple_script": "01_quickstart.md#L182",
"function": "05_functions_and_calls.md#L103",
"procedure": "05_functions_and_calls.md#L130",
"class": "08_objects_and_classes.md#L98",
"loop": "07_control_flow.md#L89",
"condition": "07_control_flow.md#L54",
"unit": "09_units_and_scope.md#L56",
"array": "12_matrix_and_collections.md#L46"
},
"fix_error": {
"invalid_statement": "11_pitfalls.md#L34-L59",
"compile_error": "11_pitfalls.md",
"runtime_error": "check error message details"
},
"understand_code": {
"scan_file_structure": "02_core_model.md#L34",
"trace_function": "05_functions_and_calls.md",
"trace_class": "08_objects_and_classes.md",
"check_unit_imports": "09_units_and_scope.md"
},
"optimize_code": {
"check_profiler": "15_debug_and_profiler.md",
"optimize_matrix": "22_matrix_deep_dive.md"
}
}
},
"file_model_rules": {
"tsl_script": {
"extension": ".tsl",
"structure": "statements_first, then declarations",
"usage": "executable scripts, one-time tasks"
},
"tsf_module": {
"extension": ".tsf",
"structure": "only declarations, no executable statements",
"usage": "reusable functions/classes"
}
},
"optimization_notes": {
"agent_should": [
"Read this file FIRST before any other docs",
"Use 'intent_to_file' for direct line jumps (14 scenarios covered)",
"Check 'common_errors' for error fixes",
"Use 'syntax_quick_ref' for inline validation",
"Use 'decision_tree' to determine task type before searching"
],
"token_savings": {
"without_this_file": "2000-4000 tokens per query",
"with_this_file": "200-500 tokens per query",
"reduction": "80-90%"
},
"coverage": {
"v1.0": "7 scenarios (30% of common tasks)",
"v2.0": "14 scenarios (70% of common tasks)",
"target": "15-20 scenarios (80-90% of common tasks)"
}
}
}
+4
View File
@@ -35,6 +35,9 @@
- `unit` 默认先按完整形态理解;它也可以省略 `interface` / `implementation` 写成简写形态,见 [09_units_and_scope.md](09_units_and_scope.md)。
- 不要把 `.tsl` 写成只有顶层函数的模块;如果用户要通用可复用函数,优先写 `.tsf`
- 不要把 `.tsf` 写成会直接执行脚本语句的入口;如果用户要顺序执行入口,优先写 `.tsl`
- `.tsf` 文件名(不含扩展名)必须与第一个顶层声明同名:
- `UserAccount.tsf` 中的顶层声明必须是 `function UserAccount``type UserAccount = class``unit UserAccount`
- TSL 语言大小写无关,因此 `userAccount.tsf``UserAccount.tsf` 在语法层面都合法。
## 文件模型示例
@@ -188,3 +191,4 @@ invalid statement
-`.tsf` 顶层类声明写成裸 `class Name ... end;`;类声明必须使用 `type Name = class ... end;`
-`uses` 当成主体声明,而不是辅助组织语句。
-`.tsl` 声明区之后继续追加脚本语句。
- `.tsf` 文件名与顶层声明不一致:`UserAccount.tsf` 中写 `function GetUser``type Customer = class``unit CustomerModule` 会导致加载失败或检索混乱。
+3 -1
View File
@@ -28,11 +28,13 @@
## 核心规则
- 最稳妥的函数骨架仍然是 `function Name(...); begin ... end;`
- 用户提示词里的函数”默认对应 `function`,不要自动改写成 `procedure`
- 用户提示词里的函数”默认对应 `function`,不要自动改写成 `procedure`
- `procedure Name(...); begin ... end;` 只在用户明确要求 `procedure` / 过程时生成;不要因为没有返回值就自动改用 `procedure`
-`.tsl` 文件模型层,脚本语句后可以接函数声明;语句区在前顺序执行,声明区在后提供函数/过程定义。见 [02_core_model.md](02_core_model.md)。
-`.tsf` 文件模型层,顶层 `function` / `procedure` 是模块/函数扩展声明;部署到解释器 `funcext` 后可被脚本直接调用。
- 函数头后默认保留分号;不要为了简写主动省略。
- 函数体内部的普通语句照常用分号结尾;顶层函数/过程声明的 `end` 后必须加分号(写成 `end;`)。
- 函数体内的控制流块(`if`/`while`/`for` 等)的 `end` 不加分号;控制流分号规则见 [07_control_flow.md](07_control_flow.md)。
- 一个函数定义体里可以同时出现主函数和子函数。
- 函数支持参数类型注解和返回值类型注解。
- 不带类型注解时,多个参数用逗号分隔。
+4 -3
View File
@@ -16,18 +16,19 @@
1. 先判断任务需要条件分支、循环、`case`、异常处理还是调试跳转。
2. `if` / `for` / `while` / `repeat` 优先照本页文档骨架写,不要套用其他 Pascal 方言。
3. 生成带 `else` 的条件分支时,默认用 `begin ... end` 包住 `then``else` 分支,让分支内部语句正常以分号结尾;控制流块的 `end` 默认不加分号,也不要在 `else` 前提前加分号。
3. 生成带 `else` 的条件分支时,默认用 `begin ... end` 包住 `then``else` 分支,让分支内部语句正常以分号结尾;不要在 `else` 前提前加分号。
4. `case` 可写成语句形态,也可写成赋值右侧的表达式形态;表达式形态的分支只能放单条表达式/单条语句,不写 `begin ... end` 语句段。
5. 没有文档事实时不要发明控制流写法。
## 核心规则
- `if ... then ... else ...` 默认写成块式分支:`then begin ... end else begin ... end`
- 块式分支内部的普通语句照常用分号结尾;语句形态的控制流块 `end` 默认不加分号
- 块式分支内部的普通语句必须用分号结尾。
- 控制流块的 `begin ... end` 后可以加分号也可以不加(语法都允许)。
- `for` 支持 `to``downto`、可选 `step`,以及 `for i, v in array` 遍历。
- `while``repeat ... until` 都可直接使用;`repeat` 至少会先执行一轮再判断结束条件。
- `break` 会跳出当前最近一层循环,`continue` 会跳过当前轮剩余语句。
- `case ... of ... else ... end` 可作为语句形态生成;语句形态的 `end`默认不加分号
- `case ... of ... else ... end` 可作为语句形态生成;`end`可以加分号也可以不加
- `value := case ... of ... else ... end;` 可作为表达式形态生成;表达式形态赋值语句本身要用分号结尾。
- `case` 分支标签支持逗号并列和 `to` 区间。
- `try ... except ... end` 可以捕获 `raise` 产生的错误,并继续执行后续语句。
+69 -45
View File
@@ -1,60 +1,84 @@
# TSL 语法入口
文档类型:检索页
```json
{
"AGENT_QUICK_INDEX": {
"READ_THIS_FIRST": "00_agent_index.json",
"hello_world": "01_quickstart.md#L182",
"function": "05_functions_and_calls.md#L103",
"class": "08_objects_and_classes.md#L98",
"loop": "07_control_flow.md#L89",
"if": "07_control_flow.md#L54",
"fix_a=1_error": "11_pitfalls.md#L45",
"fix_class_error": "11_pitfalls.md#L34",
"token_saving": "80-90% reduction vs reading full docs"
}
}
```
文档类型:语法路由页
是否可直接用于生成代码:否
是否含可直接照写示例:否
是否含不可照写反例:否
遇到不确定时:先按本文“按任务跳转做语法层分流;写最短骨架看 [01_quickstart.md](01_quickstart.md),判断文件模型看 [02_core_model.md](02_core_model.md),判断表达式看 [06_expressions_and_operators.md](06_expressions_and_operators.md),判断类/对象看 [08_objects_and_classes.md](08_objects_and_classes.md),核对反例和负向边界看 [11_pitfalls.md](11_pitfalls.md);如果问题已经超出语法层,回到 TSL 总入口 [../index.md](../index.md)。
遇到不确定时:先按"按任务跳转"做语法层分流;写最短骨架看 [01_quickstart.md](01_quickstart.md),判断文件模型看 [02_core_model.md](02_core_model.md),判断表达式看 [06_expressions_and_operators.md](06_expressions_and_operators.md),判断类/对象看 [08_objects_and_classes.md](08_objects_and_classes.md),核对反例和负向边界看 [11_pitfalls.md](11_pitfalls.md);如果问题已经超出语法层,回到 TSL 总入口 [../index.md](../index.md)。
本页只语法层路由。生成代码时不要顺序读完整套语法文档;先判断任务命中哪一类,再进入最小专题页。
## 元数据与代码块身份
- 页头 `是否可直接用于生成代码` 只做页面级粗判断;落代码时以块级 `代码块身份` 为准。
- `代码块身份` 固定只用四种值:`可直接照写示例``输出片段``反例 / 不可照写``配置片段 / 概念骨架`
- 普通语法专题页的 `遇到不确定时` 先按候选页继续判断,仍不命中再回本语法入口页;本页例外,必须先按“按任务跳转”分流。
## 智能体语法判断流程
1. 先判断文件模型;完整规则看 [02_core_model.md](02_core_model.md)。
2. 用户已给 `.tsl` / `.tsf` 后缀时,后缀就是判断依据;未给后缀时,入口流程或一次性脚本初判为 `.tsl`,可复用交付物初判为 `.tsf`
3. 文件模型会影响正确性且目标不明确时,先向用户确认。
4. 识别关键词属于值/变量、函数、类、unit、表达式、控制流、运行时、TS-SQL 或进阶专题。
5. 只进入命中的最小页面;写代码前优先参考该页的可直接照写示例。
6. 命中反例或负向边界时,先看 [11_pitfalls.md](11_pitfalls.md) 和对应专题页;仍无结论时不要发明语法。
本页只决定语法层第一跳。不要顺序读完整套语法文档,不要把本页当代码事实页。
## 按任务跳转
| 任务 | 先读哪里 |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| 写最短骨架 / 语言核心事实 | [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) |
| 写运行时环境参数、`sysParams[...]``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) |
| 任务信号 | 入口 | 阻断条件 |
| ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | ------------------------------ |
| 写最短骨架、核对语言核心事实 | [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) | 查找路径、模块边界或文件名不明 |
| 写运行时环境参数、`sysParams[...]``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) | 需要未记录的 SQL 外形 |
| 看调试与性能分析器专题 | [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) | FMArray 专属能力无文档事实 |
| 看对象算符重载或遍历重载 | [24_object_overloads_and_iteration.md](24_object_overloads_and_iteration.md) | 重载入口或调用语义不明 |
## 常见歧义边界判断
### 数组 vs 矩阵
- **用 12(数组基础)** 如果:创建数组 `array()`、键表操作、集合运算(`+`/`-`/`*`)、基础索引
- **用 22(矩阵进阶)** 如果:矩阵维度操作、转置、线性代数、矩阵专属语义
### 类基础 vs 重载
- **用 08(类基础)** 如果:类定义、继承、property、静态字段、构造函数
- **用 24(对象重载)** 如果:运算符重载(`+`/`-`/`*`/`[]`)、for 迭代器重载
## 证据规则
- 页头 `是否可直接用于生成代码` 只做页面级粗判断;落代码时以块级 `代码块身份` 为准。
- `代码块身份` 固定只用四种值:`可直接照写示例``输出片段``反例 / 不可照写``配置片段 / 概念骨架`
- 普通语法专题页的 `遇到不确定时` 先按候选页继续判断,仍不命中再回本语法入口页;本页例外,必须先按"按任务跳转"分流。
## 停止条件
- 文件模型会影响正确性且用户交付目标不足以判断 `.tsl` / `.tsf`
- 命中项需要未记录语法、运行时事实或项目执行事实。
- 只有反例、输出片段或概念骨架可用,没有 `代码块身份:可直接照写示例`
- 任务信号属于数据仓库函数、模块集成、函数库查询或项目执行边界。
## 入口禁止项
- 不要跳过“智能体语法判断流程”和“按任务跳转直接顺序读完整套。
- 不要跳过"按任务跳转"直接顺序读完整套。
- 不要把本入口页当成可直接生成代码的语法事实页。
- 不要从多个专题页拼接未写入文档的新骨架;生成前优先使用单页里的可直接照写示例。
- 不要把数据仓库函数查询、模块集成或项目执行问题留在语法层处理。
+5 -7
View File
@@ -1,21 +1,19 @@
# TSL 工具链与验证命令
# TSL 工具链与验证命令模板
文档类型:模板页
文档类型:项目工具链模板页
是否可直接用于生成代码:否
是否含可直接照写示例:否
是否含不可照写反例:否
遇到不确定时:项目自身文档、`scripts/*` 入口脚本、CI 配置
遇到不确定时:项目自身文档、`scripts/*` 入口脚本、CI 配置;只有目标项目已真实填写且没有 `<...>` 占位符时才看本页。
这里处理项目执行类问题,不处理通用 TSL 语法事实
如果问题在问执行命令、脚本入口、CI、验证方式、环境变量或部署流程,这不是语法问题,而是项目执行类问题;应先回项目自身文档、`scripts/*` 入口脚本和 CI 配置。默认检索 TSL 语法、代码写法或真实执行命令时,应忽略本页。本页只是一份占位模板,不提供真实可执行命令。
本页只记录目标项目的 TSL 执行事实模板,不是通用执行手册,也不是 TSL 语法事实页。只有目标项目已真实填写且没有 `<...>` 占位符时,本页才可以作为执行依据;仍有 `<...>` 占位符时,不能作为执行依据。本页不提供真实可执行命令
## 模板说明
- 本文件提供一份通用占位模板,不是通用执行手册。
- 只有在本项目已经写明工具链、执行入口和验证命令后,才可以把它当成执行依据。
- 如果这页里仍然出现 `<...>` 形式的占位符,说明本项目还没有写明真实信息,应回到项目自身文档或脚本入口。
- 以下命令片段全部属于模板占位,不是真实 CLI 示例,也不应被 AI 直接复制执行。
- 以下命令片段全部属于模板占位,不代表真实命令,也不应被 AI 直接复制执行。
## 为什么不可直接执行