---
name: tsl-guide
description: "TSL/TSF 语法与工程实践指南（基础语法/高级特性/函数库/最佳实践）。Triggers: TSL 语法, 写 TSL, 写 TSF, TSL 函数, TSL class, TSL unit, 矩阵操作, TS-SQL, TSL 函数库, tsl basics, tsl advanced, how to write tsl, tsf code, tsl api, 学习 TSL"
---

# TSL 完整指南

> **定位**：TSL 语言的一站式参考，从入门到进阶。本 skill 以语法为主，风格规范单独引用。

## 🚀 快速语法速查（仅语法）

> 代码风格与命名不是语法的一部分，见下方「代码风格与命名」。

### 变量与常量

```tsl
a := 1;
name := "test";
items := array(1, 2, 3);
table_data := array("Code": "0001", "Price": 12.3);
const kMaxRetries = 3;
```

### 函数

```tsl
function Add(a, b);
begin
    return a + b;
end;
```

```tsl
function Parse(const s, var out_value);
begin
    out_value := StrToInt(s);
    return out_value;
end;
```

### 控制流

```tsl
if x > 0 then
    y := 1;
else if x = 0 then
    y := 0;
else
    y := -1;

for i := 0 to 9 do
    sum := sum + i;

for idx, v in items do
    total := total + v;
```

### 异常处理

```tsl
try
    v := StrToInt(s);
except
    v := 0;
    WriteLn(ExceptObject.ErrInfo);
end;
```

### 数组与索引

```tsl
arr := array(10, 20, 30);
value := arr[0];

matrix := array((1, 2), (3, 4));
col_0 := matrix[:, 0];
```

---

## 📌 代码风格与命名（非语法）

- 代码风格：`docs/tsl/code_style.md`
- 命名规范：`docs/tsl/naming.md`
- 本仓库硬约束：`.agents/tsl/index.md`

---

## 📚 详细文档索引（按需加载）

### 📖 基础语法（primer）

**文件**：`references/primer.md`
**内容**：

- 变量/常量、类型与字面量
- 数组与表数组表达
- 运算符与表达式
- 函数定义、参数修饰、默认值、命名参数、变参
- 控制流（if/case/for/while/repeat）
- 异常处理（try/except/finally/raise）
- 编译选项（`{$Explicit+}`/`{$VarByRef-}`）

**适用场景**：第一次写 TSL、查基础语法细节。

---

### 🚀 高级特性（advanced）

**文件**：`references/advanced.md`
**内容**：

- Unit/Namespace/函数文件与调用优先级
- Class/Object 模型（继承/override/Create/Destroy）
- 扩展语法：矩阵、集合运算、结果集过滤
- TS-SQL：select/insert/update/delete/sselect/vselect/mselect
- 运行时与性能语法要点（#网格计算等）
- 新一代语法概览（复数/WeakRef/算符重载）

**适用场景**：面向对象、模块化、矩阵与 TS-SQL、高级特性。

---

### 🔍 函数库速查（index）

**文件**：`references/functions_index.md`
**内容**：

- 函数库分类索引与检索策略
- 对应权威目录：`docs/tsl/syntax_book/function/tsl/index.md`

**重要说明**：

- 函数库已拆分为 `docs/tsl/syntax_book/function/` 多文件，**禁止整目录加载**
- 优先在 `docs/tsl/syntax_book/function/tsl/` 下分文件检索

---

### 💡 常见模式与最佳实践

**文件**：`references/common_patterns.md`
**内容**：参数校验、错误处理、I/O 分层、性能小贴士。

---

## ✅ 语法覆盖清单（对照 `docs/tsl/syntax_book/`）

- `01_language_basics.md` → `references/primer.md`
- `02_control_flow.md` → `references/primer.md`
- `03_functions.md` → `references/primer.md`
- `04_modules_and_namespace.md` → `references/advanced.md`
- `05_object_model.md` → `references/advanced.md`
- `06_extended_syntax.md` → `references/advanced.md`
- `07_debug_and_profiler.md` → `references/advanced.md`（语法要点）
- `08_new_generation.md` → `references/advanced.md`（概览）

---

## 🤖 Agent 使用指南

1. **分析需求**：判断需要基础语法还是高级特性
2. **按需加载**：只读取一个子文档（避免贪婪加载）
3. **必要时检索函数库**：先索引，再定位片段

### 典型场景与 Token 消耗

**场景 1：编写简单的 TSL 函数**

```text
1. 自动读取 .agents/tsl/index.md（44 行）
2. 触发 $tsl-guide，加载 SKILL.md
3. 生成代码

Token 消耗：~6,000 tokens
```

**场景 2：编写 TSL 类**

```text
1. 自动读取 .agents/tsl/index.md（44 行）
2. 触发 $tsl-guide，加载 SKILL.md + references/advanced.md
3. 生成代码

Token 消耗：~10,000 tokens
```

**场景 3：查询 TSL 函数库条目**

```text
1. 自动读取 .agents/tsl/index.md（44 行）
2. 触发 $tsl-guide，加载 references/functions_index.md
3. 使用 rg 定位函数片段
4. 返回答案

Token 消耗：~8,000 tokens
```

---

## ⚠️ 函数库使用规则

- **禁止整目录加载**：`docs/tsl/syntax_book/function/` 体量巨大
- **推荐流程**：
  1. 先看 `docs/tsl/syntax_book/function/tsl/index.md`
  2. 再在 `docs/tsl/syntax_book/function/tsl/*.md` 中搜索
  3. 只读取相关函数片段（≤100 行）

**检索示例**：

```bash
rg -n "\\bTrim\\b" docs/tsl/syntax_book/function/tsl/base.md
rg -n "^######\s+FileExists" docs/tsl/syntax_book/function/tsl/resource.md
```

---

## 🔗 权威文档路径

- 语法手册总览：`docs/tsl/syntax_book/index.md`
- 语言基础：`docs/tsl/syntax_book/01_language_basics.md`
- 控制流与异常：`docs/tsl/syntax_book/02_control_flow.md`
- 函数：`docs/tsl/syntax_book/03_functions.md`
- 模块与命名空间：`docs/tsl/syntax_book/04_modules_and_namespace.md`
- 对象模型：`docs/tsl/syntax_book/05_object_model.md`
- 扩展语法：`docs/tsl/syntax_book/06_extended_syntax.md`
- 运行时与性能工具：`docs/tsl/syntax_book/07_debug_and_profiler.md`
- 新一代语法：`docs/tsl/syntax_book/08_new_generation.md`
- 函数库：`docs/tsl/syntax_book/function/tsl/index.md`
- 代码风格：`docs/tsl/code_style.md`
- 命名规范：`docs/tsl/naming.md`
