# TSL 快速落代码规则

本篇提供一份由专题页逐条派生的语言核心事实速查，以及没有任何复用或模块需求时的默认起手骨架。

## 本篇职责

<!-- section-id: syntax-01-001 -->

在落代码前一次性汇总跨专题的语言硬规则（赋值、文件形态、声明位置、命名参数、下标起点、类与 `unit` 外形），并提供术语对照和默认脚本骨架。本页是强制读取的派生摘要，不独立拥有完整事实；每条规则的完整上下文仍由对应专题页拥有。

## 语言核心事实速查

<!-- section-id: syntax-01-002 -->

<!-- tags: 语法速查, 硬规则, 核心规则一览, 先看哪些, 常见规则汇总 -->

这一节是专题事实的强制派生速查，不是第二份事实源。写代码时先核对这里，再按当前任务的语法要素取回对应专题 Section；`--check` 会逐条比较下面的摘要与专题页 canonical 规则。

<!-- quickstart-rule: assignment -->

- 普通变量赋值使用 `:=`；`=` 在普通表达式里用于比较，不用于赋值。
  Owner Section：`syntax-06-004`

<!-- quickstart-rule: file-choice -->

- 未给后缀时，入口流程、脚本任务或一次性执行逻辑对应 `.tsl`；可复用交付物（函数、过程、类、模块或扩展文件）对应 `.tsf`；只是脚本内部封装函数或类时，仍按 `.tsl` 处理；仍不明确时向用户确认，不要把脚本入口和可复用模块合并成一个猜测文件。
  Owner Section：`syntax-02-002`

<!-- quickstart-rule: tsl-layout -->

- `.tsl` 脚本按两段理解：语句区在前并按顺序执行；声明区在后，可放 `function / procedure` 或 `type Name = class`。写 `.tsl` 时先写语句区，需要函数、过程或类时把声明区放在语句区之后。
  Owner Section：`syntax-02-002`

<!-- quickstart-rule: tsf-layout -->

- 写 `.tsf` 时只写顶层函数 / 过程 / 类声明，或 `unit`；不要写成会直接顺序执行的脚本入口。
  Owner Section：`syntax-02-002`

<!-- quickstart-rule: tsf-filename -->

- `.tsf` 文件名（不含扩展名）必须与第一个顶层声明同名；第一个声明可以是同名 `function`、`type Name = class` 或 `unit`。
  Owner Section：`syntax-02-002`

<!-- quickstart-rule: function-default -->

- 用户提示词里的“函数”默认对应 `function`，不要自动改写成 `procedure`。
  Owner Section：`syntax-05-002`

<!-- quickstart-rule: procedure-explicit -->

- `procedure Name(...); begin ... end;` 只在用户明确要求 `procedure` / 过程时生成；不要因为没有返回值就自动改用 `procedure`。
  Owner Section：`syntax-05-002`

<!-- quickstart-rule: class-shape -->

- 类定义统一按 `type Name = class ... end;` 写。
  Owner Section：`syntax-08-002`

<!-- quickstart-rule: object-creation -->

- 普通本地类实例化默认生成 `new ClassName()`；`createObject("ClassName")`、`createObject(ClassType)` 只在字符串类名、类类型变量或跨 `unit` 路径场景生成。
  Owner Section：`syntax-08-002`

<!-- quickstart-rule: unit-shape -->

- `unit` 是完整的顶层主体；常见完整形态是 `unit Name; interface ... implementation ... end.`。
  Owner Section：`syntax-09-002`

<!-- quickstart-rule: unit-default -->

- 如果没有特殊需求，默认优先用完整形态；简写形态只在不需要显式区分 `interface` / `implementation` 时再用。
  Owner Section：`syntax-09-002`

<!-- quickstart-rule: named-arguments -->

- 调用时支持命名参数，写法是 `name: value`。
  Owner Section：`syntax-05-002`

<!-- quickstart-rule: named-argument-order -->

- 一旦某次调用里开始使用命名参数，后面的参数就不能再退回位置参数。
  Owner Section：`syntax-05-002`

<!-- quickstart-rule: string-literal-default -->

- 普通单行文本默认使用 `"..."` 或 `'...'`；根据内容选择不冲突的引号，必要时再使用转义或连续同类引号。`%% ...%%` 仅用于多行文本、引号非常密集等原始字符串场景；不得因为内容是中文、非 ASCII 或较长就自动改用 `%%`。
  Owner Section：`syntax-03-004`

<!-- quickstart-rule: string-prefix-by-type -->

- `U`、`L` 前缀只由目标字符串类型或已确认的 API 编码要求决定，不能因为内容是中文就自动添加；普通中文内容优先直接写成 `"中文内容"`。
  Owner Section：`syntax-03-004`

<!-- quickstart-rule: index-origins -->

- `array(...)` 既可以写顺序数组，也可以写字符串键表；顺序数组和 `binary(...)` 二进制缓冲区下标从 `0` 开始，字符串下标从 `1` 开始。
  Owner Section：`syntax-03-002`

## 术语对照

<!-- section-id: syntax-01-003 -->

- “脚本语句区”：`.tsl` 文件开头会按顺序执行的语句。
- “声明区”：`.tsl` 语句区之后的 `function / procedure` 或 `type Name = class` 声明。
- “顶层 `function / procedure`”：在 `.tsf` 中指模块暴露的顶层函数 / 过程，在 `.tsl` 中指脚本声明区里的函数 / 过程。
- “顶层函数骨架”“顶层函数定义体”：只指 `function` 骨架；不要因为任务没有返回值就自动改成 `procedure`。
- `class function` / “类方法”：同一件事；前者是代码关键字写法，后者是中文描述。

## 默认起手骨架

<!-- section-id: syntax-01-004 -->

<!-- tags: 起手模板, 从哪开始写, 最小可跑, 第一个脚本, hello world -->

如果用户只要求写一段代码、脚本或示例，且没有明确 `.tsf`、`unit`、模块复用或对象建模需求，直接从 `.tsl` 脚本版本开始：

代码块身份：可直接照写示例

```tsl
echo "hello";
```

代码块身份：输出片段

```text
hello
```

代码块说明：这是默认可执行脚本骨架；没有复用或模块需求时，不要主动改成 `.tsf`。需要在语句区之后接函数或类声明区时，骨架见 [02_core_model.md](02_core_model.md)。
