Add stable section IDs, structural and routing regressions, quickstart consistency checks, and CI enforcement. BREAKING CHANGE: replace heading-derived Section IDs with explicit syntax-NN-NNN identifiers.
4.8 KiB
4.8 KiB
TSL 快速落代码规则
本篇提供一份由专题页逐条派生的语言核心事实速查,以及没有任何复用或模块需求时的默认起手骨架。
本篇职责
在落代码前一次性汇总跨专题的语言硬规则(赋值、文件形态、声明位置、命名参数、下标起点、类与 unit 外形),并提供术语对照和默认脚本骨架。本页是强制读取的派生摘要,不独立拥有完整事实;每条规则的完整上下文仍由对应专题页拥有。
语言核心事实速查
这一节是专题事实的强制派生速查,不是第二份事实源。写代码时先核对这里,再按当前任务的语法要素取回对应专题 Section;--check 会逐条比较下面的摘要与专题页 canonical 规则。
- 普通变量赋值使用
:=;=在普通表达式里用于比较,不用于赋值。
- 未给后缀时,入口流程、脚本任务或一次性执行逻辑对应
.tsl;可复用交付物(函数、过程、类、模块或扩展文件)对应.tsf;只是脚本内部封装函数或类时,仍按.tsl处理;仍不明确时向用户确认,不要把脚本入口和可复用模块合并成一个猜测文件。
.tsl脚本按两段理解:语句区在前并按顺序执行;声明区在后,可放function / procedure或type Name = class。写.tsl时先写语句区,需要函数、过程或类时把声明区放在语句区之后。
- 写
.tsf时只写顶层函数 / 过程 / 类声明,或unit;不要写成会直接顺序执行的脚本入口。
.tsf文件名(不含扩展名)必须与第一个顶层声明同名;第一个声明可以是同名function、type Name = class或unit。
- 用户提示词里的“函数”默认对应
function,不要自动改写成procedure。
procedure Name(...); begin ... end;只在用户明确要求procedure/ 过程时生成;不要因为没有返回值就自动改用procedure。
- 类定义统一按
type Name = class ... end;写。
- 普通本地类实例化默认生成
new ClassName();createObject("ClassName")、createObject(ClassType)只在字符串类名、类类型变量或跨unit路径场景生成。
unit是完整的顶层主体;常见完整形态是unit Name; interface ... implementation ... end.。
- 如果没有特殊需求,默认优先用完整形态;简写形态只在不需要显式区分
interface/implementation时再用。
- 调用时支持命名参数,写法是
name: value。
- 一旦某次调用里开始使用命名参数,后面的参数就不能再退回位置参数。
array(...)既可以写顺序数组,也可以写字符串键表;顺序数组和binary(...)二进制缓冲区下标从0开始,字符串下标从1开始。
术语对照
- “脚本语句区”:
.tsl文件开头会按顺序执行的语句。 - “声明区”:
.tsl语句区之后的function / procedure或type Name = class声明。 - “顶层
function / procedure”:在.tsf中指模块暴露的顶层函数 / 过程,在.tsl中指脚本声明区里的函数 / 过程。 - “顶层函数骨架”“顶层函数定义体”:只指
function骨架;不要因为任务没有返回值就自动改成procedure。 class function/ “类方法”:同一件事;前者是代码关键字写法,后者是中文描述。
默认起手骨架
如果用户只要求写一段代码、脚本或示例,且没有明确 .tsf、unit、模块复用或对象建模需求,直接从 .tsl 脚本版本开始:
代码块身份:可直接照写示例
echo "hello";
代码块身份:输出片段
hello
代码块说明:这是默认可执行脚本骨架;没有复用或模块需求时,不要主动改成 .tsf。需要在语句区之后接函数或类声明区时,骨架见 02_core_model.md。