playbook/test/agent/test_cases_zh.md

3137 lines
69 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TSL Agent 代码生成提示测试
本文件定义了用于评估 agent 能否阅读 `docs/tsl` 并在首次尝试时生成语法正确的 TSL 代码的手动提示测试。
这些不是 TSL 语言文档。它们是 agent 评估提示。语法事实保留在 `docs/tsl`agent 测试提示保留在此处。
## 运行方法
对于每个测试用例:
1. 从可访问此仓库的全新 agent 上下文开始。
2. 仅将 `Prompt` 文本发送给 agent除非测试运行器有标准系统提示。
3. 允许 agent 阅读 `docs/tsl`
4. 仅对第一个完整答案评分。不允许 agent 修订。
5. 根据 `Pass criteria` 记录通过/失败。
推荐的运行器设置:
```text
You are in this repository. TSL grammar and reference docs are under docs/tsl.
When asked to write TSL, read the relevant docs/tsl pages first. Do not infer
syntax from Pascal, TypeScript, JavaScript, Python, or SQL.
```
## 评分标准
- `2` = 首次回答满足所有通过标准。
- `1` = 基本正确,但有一个不影响被测语法点的小问题。
- `0` = 错误的文件模型、无效的 TSL 语法、虚构的语法或遗漏了被测语法点。
跟踪这些汇总指标:
- 整体首次通过准确率。
- 按主题组的准确率。
- 最常见的失败模式。
- 失败是否来自未阅读文档、阅读了错误的文档页面或过度拟合到另一种语言。
## 全局失败模式
只要生成的代码中出现以下情况,就标记为失败:
- 使用 `=` 进行普通赋值而不是 `:=`
- 在类型化参数列表中使用逗号分隔符,例如 `function Add(a: integer, b: integer): integer`
- 将命名参数写为 `a = 1` 而不是 `a: 1`
-`.tsl` 脚本写为仅包含顶层可复用声明,而请求的是可执行脚本行为。
-`.tsl` function 或 class 声明部分之后追加可执行脚本语句。
- 将顶层 class 写为 `class Name ... end;` 而不是 `type Name = class ... end;`
- 对 class function 或 static 字段使用裸类名而不是 `class(Name)`
- 虚构 `docs/tsl` 中未记录的语法。
## 测试用例
### TSL-001: 类型化加法函数
Prompt:
```text
请根据本仓库 docs/tsl 的语法,写一个 TSL 加法函数 Add。
要求两个参数都有整数类型,返回值也要有整数类型。
只输出代码。
```
Expected focus:
- 基本的 `function` 声明。
- 类型化参数和类型化返回值。
Pass criteria:
- 使用 `function Add(a: integer; b: integer): integer;`
- 使用 `return a + b;`
- 使用 `begin ... end;`
- 不用逗号分隔类型化参数。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-002: 调用本地函数的可执行脚本
Prompt:
```text
写一段可执行的 .tsl 脚本:计算 1 + 2并用 writeLn 输出结果。
加法逻辑封装成 Add 函数,脚本里调用它。
只输出代码。
```
Expected focus:
- `.tsl` 文件模型。
- 可执行语句在本地函数声明之前。
Pass criteria:
- 脚本语句出现在 `function Add...` 声明之前。
- 在声明之前调用 `writeLn(Add(1, 2));` 或等效语句。
- 不在函数声明之后追加可执行语句。
- 如果引入赋值,使用 `:=` 进行普通赋值。
Source docs:
- `docs/tsl/syntax/01_quickstart.md`
- `docs/tsl/syntax/02_core_model.md`
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-003: 可复用函数文件
Prompt:
```text
我要一个可复用的 .tsf 函数扩展文件,里面只有一个函数 IsPositive
输入整数 x返回 x 是否大于 0。只输出代码。
```
Expected focus:
- `.tsf` 可复用声明模型。
- 没有可执行脚本入口语句。
Pass criteria:
- 输出顶层 `function IsPositive(x: integer);` 或类型化返回值变体(如果所选证据支持)。
- 函数体返回 `x > 0`
- 不添加 `.tsl` 入口语句,如 `writeLn(...)`
- 不虚构未记录的 `boolean` 返回类型。
Source docs:
- `docs/tsl/syntax/01_quickstart.md`
- `docs/tsl/syntax/02_core_model.md`
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-004: 带写回参数的过程
Prompt:
```text
写一段 .tsl 脚本,定义一个过程 Bump把传入变量加 1。
脚本里先把 a 设为 1调用 Bump(a),再输出 a。只输出代码。
```
Expected focus:
- 仅在显式请求时使用 `procedure`
- `var` 参数写回。
- `.tsl` 声明部分顺序。
Pass criteria:
- 使用 `procedure Bump(var x);`
- 在调用 `Bump(a);` 之前赋值 `a := 1;`
- 在 procedure 声明之前输出 `a`
- 不在 `procedure` 头上加返回类型。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
- `docs/tsl/syntax/02_core_model.md`
### TSL-005: 命名参数调用
Prompt:
```text
写一个 TSL 示例,定义函数 MakePair(a, b),返回 array(a, b)。
调用时必须使用命名参数,把 b 传 20把 a 传 10并输出两个元素。
只输出代码。
```
Expected focus:
- 命名参数语法。
- Array 索引。
Pass criteria:
- 使用 `MakePair(b: 20, a: 10)` 或等效的命名参数顺序调用函数。
- 不使用 `MakePair(b = 20, a = 10)`
- 使用从零开始的 array 索引读取数组元素。
-`.tsl` 中保持可执行语句在函数声明之前。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
- `docs/tsl/syntax/12_matrix_and_collections.md`
### TSL-006: 默认变量模型
Prompt:
```text
写一段最简单的 TSL 脚本:把 3 赋给 a把 4 赋给 b
再输出 a * b。不要做多余声明。只输出代码。
```
Expected focus:
- 普通变量默认不需要 `var` 声明。
- 赋值运算符。
Pass criteria:
- 使用 `a := 3;``b := 4;`
- 不使用 `a = 3;``b = 4;`
- 不添加不必要的 `var` 声明。
Source docs:
- `docs/tsl/syntax/04_variables_and_constants.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-007: 显式变量模式
Prompt:
```text
写一段 TSL 脚本,开启 explicit 模式,声明变量 total
把 total 设置为 0然后输出它。只输出代码。
```
Expected focus:
- `{$explicit+}`
- 显式 `var` 声明。
Pass criteria:
-`{$explicit+}` 开头或在首次使用未声明变量之前放置。
- 声明 `var total;`
- 使用 `total := 0;` 赋值。
Source docs:
- `docs/tsl/syntax/04_variables_and_constants.md`
- `docs/tsl/syntax/16_lexical_structure_and_compile_options.md`
### TSL-008: 常量初始化
Prompt:
```text
写一段 TSL 脚本,定义常量 max_count 为 3 + 4
然后输出 max_count。只输出代码。
```
Expected focus:
- `const name = value;` 是常量初始化,不是普通赋值。
Pass criteria:
- 使用 `const max_count = 3 + 4;`
- 输出 `max_count`
- 之后不对 `max_count` 赋值。
Source docs:
- `docs/tsl/syntax/04_variables_and_constants.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-009: 单变量解构
Prompt:
```text
写一段 TSL 脚本,从 array(7, 8, 9) 里只拆出第一个值到 first
然后输出 first。只输出代码。
```
Expected focus:
- 单变量解构保留尾随逗号。
Pass criteria:
- 使用 `[first, ] := array(7, 8, 9);`
- 不使用 `[first] := ...`
Source docs:
- `docs/tsl/syntax/04_variables_and_constants.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-010: If Else 块
Prompt:
```text
写一段 TSL 脚本:如果 score >= 60就把 result 设为 "pass"
否则设为 "fail",最后输出 result。score 设为 70。只输出代码。
```
Expected focus:
- 块式 `if ... then begin ... end else begin ... end`
- `then` 块的 `end``else` 之间没有分号。
Pass criteria:
- 使用 `if score >= 60 then` 后跟有效块。
- 不在 `then` 分支的 `end` 之后、`else` 之前放置分号。
- 在条件块之后输出,不是仅在一个分支内输出。
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-011: 带步长的 For 循环
Prompt:
```text
写一段 TSL 脚本,用 for 循环计算 1、3、5 的和并输出。
要求使用 step。只输出代码。
```
Expected focus:
- `for i := 1 to 5 step 2 do`
Pass criteria:
- 使用 `for i := 1 to 5 step 2 do`
- 使用 `:=``+=` 累加。
- 输出 `9` 或计算的和变量。
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-012: Array 遍历
Prompt:
```text
写一段 TSL 脚本,遍历 array(10, 20, 30),每行输出索引和值的和。
必须使用 for i, v in data。只输出代码。
```
Expected focus:
- Array 遍历形式。
- 从零开始的索引行为。
Pass criteria:
- 使用 `for i, v in data do`
- 使用 `data := array(10, 20, 30);`
- 不虚构 Python 风格或 JavaScript 风格的迭代语法。
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-013: Array 和 String 索引
Prompt:
```text
写一段 TSL 脚本,创建 array(10, 20, 30) 和字符串 "ABC"。
输出数组第一个元素,再输出字符串第一个字符。只输出代码。
```
Expected focus:
- Array 是从零开始的。
- String 是从一开始的。
Pass criteria:
- 使用 `arr[0]` 读取第一个数组元素。
- 使用 `s[1]` 读取第一个字符串字符。
- 不使用 `s[0]`
Source docs:
- `docs/tsl/syntax/01_quickstart.md`
- `docs/tsl/syntax/03_values_and_literals.md`
- `docs/tsl/syntax/11_pitfalls.md`
### TSL-014: 类哈希 Array
Prompt:
```text
写一段 TSL 脚本,用 array 创建一个带字符串键的表,
包含 Code = "0001" 和 Price = 12.3,然后输出 Code。只输出代码。
```
Expected focus:
- `array("Code": "0001", "Price": 12.3)`
Pass criteria:
- 使用字符串键 `array(...)` 语法。
- 使用 `hash["Code"]` 或等效变量名读取。
Source docs:
- `docs/tsl/syntax/12_matrix_and_collections.md`
### TSL-015: in 与 sqlin
Prompt:
```text
写一段 TSL 脚本,同时演示:
1 是否属于 array(1, 2),以及 array(1, 2) 这一整行是否存在于
array((1, 2), (3, 4))。分别输出两个判断结果。只输出代码。
```
Expected focus:
- 元素/子集关系使用 `in`
- 整行关系使用 `sqlin`
Pass criteria:
- 使用 `1 in array(1, 2)`
- 使用 `array(1, 2) sqlin array((1, 2), (3, 4))`
- 不对整行测试使用 `in`
Source docs:
- `docs/tsl/syntax/12_matrix_and_collections.md`
### TSL-016: 显式字符串到整数转换
Prompt:
```text
写一段 TSL 脚本,把字符串 "1234" 转成整数后加 1
再输出结果。只输出代码。
```
Expected focus:
- 显式转换而不是依赖混合类型算术。
Pass criteria:
- 使用 `strToInt(...)`
- 不直接计算 `"1234" + 1`
Source docs:
- `docs/tsl/syntax/17_types_and_conversions.md`
### TSL-017: Nil 处理
Prompt:
```text
写一段 TSL 脚本,创建空数组 arr判断 arr[0] 是否为 nil
并输出判断结果。只输出代码。
```
Expected focus:
- 空数组缺失元素返回 `nil`
- 显式 nil 比较。
Pass criteria:
- 使用 `arr := array();`
- 检查 `arr[0] = nil` 或使用已记录的 `ifNil(...)`
- 不虚构 `null`、`None` 或 `undefined`
Source docs:
- `docs/tsl/syntax/17_types_and_conversions.md`
### TSL-018: 类正则表达式 Like
Prompt:
```text
写一段 TSL 脚本,判断字符串 "abc" 是否匹配以 a 开头的模式,
用 like 运算符,并输出结果。只输出代码。
```
Expected focus:
- `like` 右侧是类正则表达式,不是 SQL `%` 通配符。
Pass criteria:
- 使用正则风格模式,如 `"^a.*"` 或其他已记录的兼容正则模式。
- 不使用 `"a%"` 作为模式。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-041: 位运算符
Prompt:
```text
写一段 TSL 脚本,对两个整数演示位与、位或、位非、位异或,
并输出结果。只输出代码。
```
Pass criteria:
- 使用点前缀位运算符,如 `.&`、`.|`、`.!` 和 `.^`
- 不使用普通的 `&`、`|` 或 `~` 作为位运算符。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-042: 复合赋值和自增
Prompt:
```text
写一段 TSL 脚本a 初始为 1先用复合赋值加 2
再自增一次,最后输出 a。只输出代码。
```
Pass criteria:
- 使用已记录的 `+=``a++``++a`
- 使用 `a := 1;` 初始化。
- 不使用 `a = a + 2`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-043: Nil 安全访问
Prompt:
```text
写一段 TSL 示例,安全读取可能为 nil 的对象成员 value
使用 docs/tsl 里的空安全访问写法。只输出代码。
```
Pass criteria:
- 使用已记录的 nil 安全访问,如 `obj?.value`
- 不虚构超出已记录模式的可选链式调用形式。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-044: 标量链式比较
Prompt:
```text
写一段 TSL 脚本,判断 1 < 2 < 3 的连续标量比较并输出结果。
使用 docs/tsl 的链式比较写法。只输出代码。
```
Pass criteria:
- 使用标量链式比较,如 `1 :< 2 :< 3`
- 不写 Python 风格的 `1 < 2 < 3`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-045: 类矩阵链式比较
Prompt:
```text
写一段 TSL 脚本,对 array(1, 2, -1)、array(2, 1, 0)、array(3, 2, 1)
做逐元素链式小于比较,并输出结果数组的三个元素。只输出代码。
```
Pass criteria:
- 使用矩阵链式比较,如 `::<`
- 使用从零开始的索引读取结果数组元素。
- 不对数组级比较使用标量 `:<`
Source docs:
- `docs/tsl/syntax/12_matrix_and_collections.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-046: 默认参数
Prompt:
```text
写一个 TSL 函数 AddOne参数 a 默认值为 1返回 a + 1。
再写脚本输出 AddOne() 和 AddOne(5)。只输出代码。
```
Pass criteria:
- 使用 `function AddOne(a = 1);`
-`.tsl` 声明部分之前调用函数。
- 不使用不支持的默认参数语法。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-047: 类型化默认参数
Prompt:
```text
写一个 TSL 函数 TypedAdd参数 a 是 integer默认值为 1
返回值是 integer返回 a + 1。只输出代码。
```
Pass criteria:
- 使用 `function TypedAdd(a: integer = 1): integer;`
- 不用逗号分隔类型化参数。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-048: 跳过中间参数的命名参数
Prompt:
```text
写一段 TSL 脚本,定义 TestFunc(a, b, c),调用 TestFunc(1, c: 3)
在函数里输出 b 是否为 nil。只输出代码。
```
Pass criteria:
- 使用命名参数语法 `c: 3`
- 使用 `ifNil(b)` 或已记录的 nil 比较检查跳过的 `b`
- 保持可执行调用在函数声明之前。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-049: 带命名参数的 call
Prompt:
```text
写一段 TSL 脚本,通过 call 调用 TestFunc并用命名参数传 a、b、c。
TestFunc 返回 a * 100 + b * 10 + c。只输出代码。
```
Pass criteria:
- 使用 `call("TestFunc", a: ..., b: ..., c: ...)`
- 不用 `=` 写命名参数。
-`.tsl` 中的调用之后定义 `TestFunc`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-050: varByRef 开关
Prompt:
```text
写一段 TSL 脚本,演示 {$varByRef-} 下未修饰参数不写回,
但 var 参数仍会写回。只输出代码。
```
Pass criteria:
- 使用 `{$varByRef-}`,如果需要则稍后使用 `{$varByRef+}` 恢复。
- 包含一个未修饰参数函数和一个 `var` 参数函数。
- 不依赖其他语言的值/引用模型。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
- `docs/tsl/syntax/16_lexical_structure_and_compile_options.md`
- `docs/tsl/syntax/11_pitfalls.md`
### TSL-019: 基本 Class
Prompt:
```text
写一段 .tsl 脚本,定义 Person 类,包含 public 字段 name。
脚本里创建 Person把 name 设为 "Tom",然后输出 name。只输出代码。
```
Expected focus:
- 顶层 class 声明语法。
- `.tsl` 可执行语句在 class 声明部分之前。
Pass criteria:
- 使用 `type Person = class`
-`name;` 之前包含 `public`
- 使用 `new Person()` 创建。
- 不写 `class Person`
- 不在 class 声明之后追加可执行语句。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
- `docs/tsl/syntax/02_core_model.md`
### TSL-020: Public 构造函数
Prompt:
```text
写一段 .tsl 脚本,定义 Counter 类。
构造函数接收初始值 v保存到 valueInc 方法把 value 加 1 并返回。
脚本里 new Counter(10),输出 Inc 的结果。只输出代码。
```
Expected focus:
- `public` 下的 `function create(...)` 构造函数。
- 实例方法体直接访问成员。
Pass criteria:
- 定义 `type Counter = class`
-`public` 部分放置 `function create(v);`
-`create` 中使用 `value := v;`
-`Inc` 中使用 `value := value + 1; return value;` 或等效语句。
- 不将 `create` 设为 private 或 protected。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-021: Static 字段访问
Prompt:
```text
写一段 TSL 示例,定义 THuman 类,包含 static 字段 mCount。
先把 mCount 设置为 100再输出它。只输出代码。
```
Expected focus:
- 通过 class type 访问 static 字段。
Pass criteria:
- 定义 `static mCount;`
- 通过 `class(THuman).mCount` 设置或读取。
- 不使用 `THuman.mCount`
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
- `docs/tsl/syntax/11_pitfalls.md`
### TSL-022: Class Function 访问
Prompt:
```text
写一个 TSL 类 MathBox里面有 class function Add(a, b),返回 a + b。
再写脚本输出 MathBox 的 Add(1, 2) 结果。只输出代码。
```
Expected focus:
- Class function 声明。
- 通过 class type 调用 class function。
Pass criteria:
-`type MathBox = class` 内定义 `class function Add(a, b);`
- 通过 `class(MathBox).Add(1, 2)` 或其他已记录的 class-type 路径调用。
- 不调用 `MathBox.Add(1, 2)`
-`.tsl` 中保持可执行调用在 class 声明之前。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
- `docs/tsl/syntax/11_pitfalls.md`
### TSL-023: 完整 Unit 骨架
Prompt:
```text
写一个 .tsf unit名字是 DemoUnit。
对外暴露函数 Ping调用返回 1。使用完整 interface / implementation 结构。
只输出代码。
```
Expected focus:
- 完整的 `unit` 结构。
- `end.` 终止符。
Pass criteria:
-`unit DemoUnit;` 开头。
-`interface``implementation` 部分。
-`interface` 中声明 `function Ping();`
- 实现 `function Ping(); begin return 1; end;`
-`end.` 结束 unit。
Source docs:
- `docs/tsl/syntax/09_units_and_scope.md`
- `docs/tsl/syntax/01_quickstart.md`
### TSL-024: 顶层 uses 在语句之前
Prompt:
```text
写一段 .tsl 脚本,使用 UnitA 和 UnitB 两个 unit
然后调用 Run() 并输出结果。注意 uses 的位置。只输出代码。
```
Expected focus:
- 顶层 `uses` 在普通语句之前。
- 一个 `uses` 语句中包含多个 unit。
Pass criteria:
- 在可执行语句之前使用 `uses UnitA, UnitB;`
- 不在顶层 `uses` 之前写普通语句。
- 默认不生成两个独立的顶层 `uses` 语句。
Source docs:
- `docs/tsl/syntax/09_units_and_scope.md`
- `docs/tsl/syntax/11_pitfalls.md`
### TSL-025: 函数体 uses 位置
Prompt:
```text
写一个 TSL 函数 RunInFunction函数体内使用 DemoUnit
然后返回 Ping()。只输出这个函数代码。
```
Expected focus:
- 函数体 `uses` 必须是第一条语句。
Pass criteria:
-`uses DemoUnit;` 作为 `begin` 之后的第一条语句。
- 不在函数体 `uses` 之前放置任何赋值或其他语句。
- 不在同一个函数体内重复 `uses`
Source docs:
- `docs/tsl/syntax/09_units_and_scope.md`
### TSL-026: Try Except
Prompt:
```text
写一段 TSL 脚本,用 try/except 捕获 raise "bad"
在 except 中输出 exceptObject.errInfo。只输出代码。
```
Expected focus:
- TSL 异常语法。
- `exceptObject` 字段。
Pass criteria:
- 使用 `try ... except ... end`
- 使用 `raise "bad"` 抛出。
-`except` 块中读取 `exceptObject.errInfo`
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-027: 模糊的文件模型
Prompt:
```text
帮我写一个 TSL 的加法函数。
```
Expected focus:
- 处理未充分指定的用户请求。
- 避免虚构文件模型假设。
Pass criteria:
- 要么仅生成最小的可复用函数声明,要么在代码之前明确说明文件模型假设。
- 使用 `function`,不使用 `procedure`
- 不生成无效的 `.tsl` 声明排序。
- 如果提示未要求参数类型,则不虚构参数类型。
Source docs:
- `docs/tsl/index.md`
- `docs/tsl/syntax/01_quickstart.md`
- `docs/tsl/syntax/02_core_model.md`
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-028: 带类型要求的不规范提示
Prompt:
```text
帮我写一个tsl代码写一个加法需要参数类型和返回类型。
```
Expected focus:
- 对非正式中文提示的鲁棒性。
- 正确的类型化函数语法。
Pass criteria:
- 使用带类型化参数和类型化返回值的 `function`
- 在类型化参数之间使用分号。
- 使用 `return a + b;`
- 不使用类似 TypeScript 的语法,如 `function add(a: number, b: number): number`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-029: 反 Pascal 赋值陷阱
Prompt:
```text
写一段 TSL 脚本,把 a 设为 1把 b 设为 2
如果 a + b 等于 3 就输出 "ok"。只输出代码。
```
Expected focus:
- 普通赋值与相等比较。
Pass criteria:
- 使用 `a := 1;``b := 2;`
- 仅在比较表达式中使用 `=`
- 不使用 `==`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-041: 位运算符
Prompt:
```text
写一段 TSL 脚本,对两个整数演示位与、位或、位非、位异或,
并输出结果。只输出代码。
```
Pass criteria:
- 使用点前缀位运算符,如 `.&`、`.|`、`.!` 和 `.^`
- 不使用普通的 `&`、`|` 或 `~` 作为位运算符。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-042: 复合赋值和自增
Prompt:
```text
写一段 TSL 脚本a 初始为 1先用复合赋值加 2
再自增一次,最后输出 a。只输出代码。
```
Pass criteria:
- 使用已记录的 `+=``a++``++a`
- 使用 `a := 1;` 初始化。
- 不使用 `a = a + 2`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-043: Nil 安全访问
Prompt:
```text
写一段 TSL 示例,安全读取可能为 nil 的对象成员 value
使用 docs/tsl 里的空安全访问写法。只输出代码。
```
Pass criteria:
- 使用已记录的 nil 安全访问,如 `obj?.value`
- 不虚构超出已记录模式的可选链式调用形式。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-044: 标量链式比较
Prompt:
```text
写一段 TSL 脚本,判断 1 < 2 < 3 的连续标量比较并输出结果。
使用 docs/tsl 的链式比较写法。只输出代码。
```
Pass criteria:
- 使用标量链式比较,如 `1 :< 2 :< 3`
- 不写 Python 风格的 `1 < 2 < 3`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-045: 类矩阵链式比较
Prompt:
```text
写一段 TSL 脚本,对 array(1, 2, -1)、array(2, 1, 0)、array(3, 2, 1)
做逐元素链式小于比较,并输出结果数组的三个元素。只输出代码。
```
Pass criteria:
- 使用矩阵链式比较,如 `::<`
- 使用从零开始的索引读取结果数组元素。
- 不对数组级比较使用标量 `:<`
Source docs:
- `docs/tsl/syntax/12_matrix_and_collections.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-046: 默认参数
Prompt:
```text
写一个 TSL 函数 AddOne参数 a 默认值为 1返回 a + 1。
再写脚本输出 AddOne() 和 AddOne(5)。只输出代码。
```
Pass criteria:
- 使用 `function AddOne(a = 1);`
-`.tsl` 声明部分之前调用函数。
- 不使用不支持的默认参数语法。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-047: 类型化默认参数
Prompt:
```text
写一个 TSL 函数 TypedAdd参数 a 是 integer默认值为 1
返回值是 integer返回 a + 1。只输出代码。
```
Pass criteria:
- 使用 `function TypedAdd(a: integer = 1): integer;`
- 不用逗号分隔类型化参数。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-048: 跳过中间参数的命名参数
Prompt:
```text
写一段 TSL 脚本,定义 TestFunc(a, b, c),调用 TestFunc(1, c: 3)
在函数里输出 b 是否为 nil。只输出代码。
```
Pass criteria:
- 使用命名参数语法 `c: 3`
- 使用 `ifNil(b)` 或已记录的 nil 比较检查跳过的 `b`
- 保持可执行调用在函数声明之前。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-049: 带命名参数的 call
Prompt:
```text
写一段 TSL 脚本,通过 call 调用 TestFunc并用命名参数传 a、b、c。
TestFunc 返回 a * 100 + b * 10 + c。只输出代码。
```
Pass criteria:
- 使用 `call("TestFunc", a: ..., b: ..., c: ...)`
- 不用 `=` 写命名参数。
-`.tsl` 中的调用之后定义 `TestFunc`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-050: varByRef 开关
Prompt:
```text
写一段 TSL 脚本,演示 {$varByRef-} 下未修饰参数不写回,
但 var 参数仍会写回。只输出代码。
```
Pass criteria:
- 使用 `{$varByRef-}`,如果需要则稍后使用 `{$varByRef+}` 恢复。
- 包含一个未修饰参数函数和一个 `var` 参数函数。
- 不依赖其他语言的值/引用模型。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
- `docs/tsl/syntax/16_lexical_structure_and_compile_options.md`
- `docs/tsl/syntax/11_pitfalls.md`
### TSL-030: 声明后无脚本陷阱
Prompt:
```text
写一段 .tsl 脚本:先调用 Hello()Hello 输出 "hello"。
调用完成后再输出 "done"。只输出代码。
```
Expected focus:
- 所有可执行脚本语句必须在声明部分之前。
- 自然的提示顺序可能诱使 agent 在 `function Hello` 之后放置 `writeLn("done")`
Pass criteria:
-`Hello();` 和输出 `"done"` 的语句都放在 `function Hello();` 之前。
- 在可执行语句之后定义 `Hello`
- 不在函数声明之后追加 `"done"` 输出语句。
Source docs:
- `docs/tsl/syntax/01_quickstart.md`
- `docs/tsl/syntax/02_core_model.md`
- `docs/tsl/syntax/11_pitfalls.md`
## 扩展紧凑用例
前 30 个用例是详细的基线用例。以下紧凑用例扩展了语法覆盖范围,同时保持每个提示独立可运行。
### TSL-031: 数字字面量类型
Prompt:
```text
写一段 TSL 脚本,分别输出 0x10、0b10、0o10、100L、1E2 的类型判断结果。
只输出代码。
```
Pass criteria:
- 使用已记录的数字字面量。
- 使用类型检查,如 `ifInt`、`ifInt64` 和 `ifReal`
- 不将字面量重写为仅十进制值。
Source docs:
- `docs/tsl/syntax/17_types_and_conversions.md`
### TSL-032: 日期时间字面量
Prompt:
```text
写一段 TSL 脚本,创建 20111231T 和 20101231.0931T
并分别输出日期和时间字符串。只输出代码。
```
Pass criteria:
- 使用已记录的日期时间字面量形式。
- 使用已记录的转换辅助函数,如 `dateToStr``timeToStr`
- 不虚构 ISO 字符串字面量语法。
Source docs:
- `docs/tsl/syntax/17_types_and_conversions.md`
### TSL-033: Boolean 和数字真值性
Prompt:
```text
写一段 TSL 脚本,输出 true、false并演示 if 2、if 0、if -1 的判断结果。
只输出代码。
```
Pass criteria:
- 直接使用 `true``false`
-`0` 视为 false将非零数值视为 true。
- 不虚构 `True` / `False` 大写形式。
Source docs:
- `docs/tsl/syntax/17_types_and_conversions.md`
### TSL-034: Nil 算术边界
Prompt:
```text
写一段 TSL 脚本,输出 ifNil(nil)、nil + 1、1 + nil
以及 nil + nil 是否仍为 nil。只输出代码。
```
Pass criteria:
- 使用 `nil`,不使用 `null`、`None` 或 `undefined`
- 使用 `ifNil(nil)` 或已记录的 `nil` 比较。
- 不将 `nil + 1` 拒绝为无效语法。
Source docs:
- `docs/tsl/syntax/17_types_and_conversions.md`
### TSL-035: 复数基础
Prompt:
```text
写一段 TSL 脚本,创建复数 4 + 3j 和 complex(5, -2)
输出第一个复数的 real、imag 和 ifComplex 判断。只输出代码。
```
Pass criteria:
- 按文档使用 `4 + 3j``complex(real, imag)`
- 使用 `real(...)`、`imag(...)` 和 `ifComplex(...)`
- 不虚构 Python 对象方法,如 `.real`
Source docs:
- `docs/tsl/syntax/17_types_and_conversions.md`
### TSL-036: 字符串连接
Prompt:
```text
写一段 TSL 脚本,把 "TS" 和 "L" 拼成 "TSL" 并输出。
使用 docs/tsl 里确认的字符串连接写法。只输出代码。
```
Pass criteria:
- 使用已记录的字符串连接,用 `+``$`
- 使用 TSL 字符串字面量。
- 不调用未记录的辅助函数,如 `concat(...)`
Source docs:
- `docs/tsl/syntax/03_values_and_literals.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-037: 算术运算符覆盖
Prompt:
```text
写一段 TSL 脚本,分别输出 9 div 4、9 mod 4、2 ^ 3、8 ~ 2、3 \ 2。
只输出代码。
```
Pass criteria:
- 按文档使用 `div`、`mod`、`^`、`~` 和 `\`
- 不用 JavaScript 风格的运算符替换它们。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-041: 位运算符
Prompt:
```text
写一段 TSL 脚本,对两个整数演示位与、位或、位非、位异或,
并输出结果。只输出代码。
```
Pass criteria:
- 使用点前缀位运算符,如 `.&`、`.|`、`.!` 和 `.^`
- 不使用普通的 `&`、`|` 或 `~` 作为位运算符。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-042: 复合赋值和自增
Prompt:
```text
写一段 TSL 脚本a 初始为 1先用复合赋值加 2
再自增一次,最后输出 a。只输出代码。
```
Pass criteria:
- 使用已记录的 `+=``a++``++a`
- 使用 `a := 1;` 初始化。
- 不使用 `a = a + 2`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-043: Nil 安全访问
Prompt:
```text
写一段 TSL 示例,安全读取可能为 nil 的对象成员 value
使用 docs/tsl 里的空安全访问写法。只输出代码。
```
Pass criteria:
- 使用已记录的 nil 安全访问,如 `obj?.value`
- 不虚构超出已记录模式的可选链式调用形式。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-044: 标量链式比较
Prompt:
```text
写一段 TSL 脚本,判断 1 < 2 < 3 的连续标量比较并输出结果。
使用 docs/tsl 的链式比较写法。只输出代码。
```
Pass criteria:
- 使用标量链式比较,如 `1 :< 2 :< 3`
- 不写 Python 风格的 `1 < 2 < 3`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-045: 类矩阵链式比较
Prompt:
```text
写一段 TSL 脚本,对 array(1, 2, -1)、array(2, 1, 0)、array(3, 2, 1)
做逐元素链式小于比较,并输出结果数组的三个元素。只输出代码。
```
Pass criteria:
- 使用矩阵链式比较,如 `::<`
- 使用从零开始的索引读取结果数组元素。
- 不对数组级比较使用标量 `:<`
Source docs:
- `docs/tsl/syntax/12_matrix_and_collections.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-046: 默认参数
Prompt:
```text
写一个 TSL 函数 AddOne参数 a 默认值为 1返回 a + 1。
再写脚本输出 AddOne() 和 AddOne(5)。只输出代码。
```
Pass criteria:
- 使用 `function AddOne(a = 1);`
-`.tsl` 声明部分之前调用函数。
- 不使用不支持的默认参数语法。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-047: 类型化默认参数
Prompt:
```text
写一个 TSL 函数 TypedAdd参数 a 是 integer默认值为 1
返回值是 integer返回 a + 1。只输出代码。
```
Pass criteria:
- 使用 `function TypedAdd(a: integer = 1): integer;`
- 不用逗号分隔类型化参数。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-048: 跳过中间参数的命名参数
Prompt:
```text
写一段 TSL 脚本,定义 TestFunc(a, b, c),调用 TestFunc(1, c: 3)
在函数里输出 b 是否为 nil。只输出代码。
```
Pass criteria:
- 使用命名参数语法 `c: 3`
- 使用 `ifNil(b)` 或已记录的 nil 比较检查跳过的 `b`
- 保持可执行调用在函数声明之前。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-049: 带命名参数的 call
Prompt:
```text
写一段 TSL 脚本,通过 call 调用 TestFunc并用命名参数传 a、b、c。
TestFunc 返回 a * 100 + b * 10 + c。只输出代码。
```
Pass criteria:
- 使用 `call("TestFunc", a: ..., b: ..., c: ...)`
- 不用 `=` 写命名参数。
-`.tsl` 中的调用之后定义 `TestFunc`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-050: varByRef 开关
Prompt:
```text
写一段 TSL 脚本,演示 {$varByRef-} 下未修饰参数不写回,
但 var 参数仍会写回。只输出代码。
```
Pass criteria:
- 使用 `{$varByRef-}`,如果需要则稍后使用 `{$varByRef+}` 恢复。
- 包含一个未修饰参数函数和一个 `var` 参数函数。
- 不依赖其他语言的值/引用模型。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
- `docs/tsl/syntax/16_lexical_structure_and_compile_options.md`
### TSL-038: 条件表达式
Prompt:
```text
写一段 TSL 脚本a 小于 b 时 value 为 10否则为 20
要求使用条件表达式并输出 value。只输出代码。
```
Pass criteria:
- 使用 `condition ? true_value : false_value`
- 使用 `:=` 进行赋值。
- 不错误地虚构 C/JS 的 `?:` 位置。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-041: 位运算符
Prompt:
```text
写一段 TSL 脚本,对两个整数演示位与、位或、位非、位异或,
并输出结果。只输出代码。
```
Pass criteria:
- 使用点前缀位运算符,如 `.&`、`.|`、`.!` 和 `.^`
- 不使用普通的 `&`、`|` 或 `~` 作为位运算符。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-042: 复合赋值和自增
Prompt:
```text
写一段 TSL 脚本a 初始为 1先用复合赋值加 2
再自增一次,最后输出 a。只输出代码。
```
Pass criteria:
- 使用已记录的 `+=``a++``++a`
- 使用 `a := 1;` 初始化。
- 不使用 `a = a + 2`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-043: Nil 安全访问
Prompt:
```text
写一段 TSL 示例,安全读取可能为 nil 的对象成员 value
使用 docs/tsl 里的空安全访问写法。只输出代码。
```
Pass criteria:
- 使用已记录的 nil 安全访问,如 `obj?.value`
- 不虚构超出已记录模式的可选链式调用形式。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-044: 标量链式比较
Prompt:
```text
写一段 TSL 脚本,判断 1 < 2 < 3 的连续标量比较并输出结果。
使用 docs/tsl 的链式比较写法。只输出代码。
```
Pass criteria:
- 使用标量链式比较,如 `1 :< 2 :< 3`
- 不写 Python 风格的 `1 < 2 < 3`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-045: 类矩阵链式比较
Prompt:
```text
写一段 TSL 脚本,对 array(1, 2, -1)、array(2, 1, 0)、array(3, 2, 1)
做逐元素链式小于比较,并输出结果数组的三个元素。只输出代码。
```
Pass criteria:
- 使用矩阵链式比较,如 `::<`
- 使用从零开始的索引读取结果数组元素。
- 不对数组级比较使用标量 `:<`
Source docs:
- `docs/tsl/syntax/12_matrix_and_collections.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-046: 默认参数
Prompt:
```text
写一个 TSL 函数 AddOne参数 a 默认值为 1返回 a + 1。
再写脚本输出 AddOne() 和 AddOne(5)。只输出代码。
```
Pass criteria:
- 使用 `function AddOne(a = 1);`
-`.tsl` 声明部分之前调用函数。
- 不使用不支持的默认参数语法。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-047: 类型化默认参数
Prompt:
```text
写一个 TSL 函数 TypedAdd参数 a 是 integer默认值为 1
返回值是 integer返回 a + 1。只输出代码。
```
Pass criteria:
- 使用 `function TypedAdd(a: integer = 1): integer;`
- 不用逗号分隔类型化参数。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-048: 跳过中间参数的命名参数
Prompt:
```text
写一段 TSL 脚本,定义 TestFunc(a, b, c),调用 TestFunc(1, c: 3)
在函数里输出 b 是否为 nil。只输出代码。
```
Pass criteria:
- 使用命名参数语法 `c: 3`
- 使用 `ifNil(b)` 或已记录的 nil 比较检查跳过的 `b`
- 保持可执行调用在函数声明之前。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-049: 带命名参数的 call
Prompt:
```text
写一段 TSL 脚本,通过 call 调用 TestFunc并用命名参数传 a、b、c。
TestFunc 返回 a * 100 + b * 10 + c。只输出代码。
```
Pass criteria:
- 使用 `call("TestFunc", a: ..., b: ..., c: ...)`
- 不用 `=` 写命名参数。
-`.tsl` 中的调用之后定义 `TestFunc`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-050: varByRef 开关
Prompt:
```text
写一段 TSL 脚本,演示 {$varByRef-} 下未修饰参数不写回,
但 var 参数仍会写回。只输出代码。
```
Pass criteria:
- 使用 `{$varByRef-}`,如果需要则稍后使用 `{$varByRef+}` 恢复。
- 包含一个未修饰参数函数和一个 `var` 参数函数。
- 不依赖其他语言的值/引用模型。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
- `docs/tsl/syntax/16_lexical_structure_and_compile_options.md`
### TSL-039: 省略真值的条件表达式
Prompt:
```text
写一段 TSL 脚本,分别输出 2 ?: 9 和 0 ?: 9 的结果。只输出代码。
```
Pass criteria:
- 使用已记录的 `value ?: fallback` 形式。
- 除非保留被测试的表达式形式,否则不重写为普通 `if` 语句。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-041: 位运算符
Prompt:
```text
写一段 TSL 脚本,对两个整数演示位与、位或、位非、位异或,
并输出结果。只输出代码。
```
Pass criteria:
- 使用点前缀位运算符,如 `.&`、`.|`、`.!` 和 `.^`
- 不使用普通的 `&`、`|` 或 `~` 作为位运算符。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-042: 复合赋值和自增
Prompt:
```text
写一段 TSL 脚本a 初始为 1先用复合赋值加 2
再自增一次,最后输出 a。只输出代码。
```
Pass criteria:
- 使用已记录的 `+=``a++``++a`
- 使用 `a := 1;` 初始化。
- 不使用 `a = a + 2`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-043: Nil 安全访问
Prompt:
```text
写一段 TSL 示例,安全读取可能为 nil 的对象成员 value
使用 docs/tsl 里的空安全访问写法。只输出代码。
```
Pass criteria:
- 使用已记录的 nil 安全访问,如 `obj?.value`
- 不虚构超出已记录模式的可选链式调用形式。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-044: 标量链式比较
Prompt:
```text
写一段 TSL 脚本,判断 1 < 2 < 3 的连续标量比较并输出结果。
使用 docs/tsl 的链式比较写法。只输出代码。
```
Pass criteria:
- 使用标量链式比较,如 `1 :< 2 :< 3`
- 不写 Python 风格的 `1 < 2 < 3`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-045: 类矩阵链式比较
Prompt:
```text
写一段 TSL 脚本,对 array(1, 2, -1)、array(2, 1, 0)、array(3, 2, 1)
做逐元素链式小于比较,并输出结果数组的三个元素。只输出代码。
```
Pass criteria:
- 使用矩阵链式比较,如 `::<`
- 使用从零开始的索引读取结果数组元素。
- 不对数组级比较使用标量 `:<`
Source docs:
- `docs/tsl/syntax/12_matrix_and_collections.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-046: 默认参数
Prompt:
```text
写一个 TSL 函数 AddOne参数 a 默认值为 1返回 a + 1。
再写脚本输出 AddOne() 和 AddOne(5)。只输出代码。
```
Pass criteria:
- 使用 `function AddOne(a = 1);`
-`.tsl` 声明部分之前调用函数。
- 不使用不支持的默认参数语法。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-047: 类型化默认参数
Prompt:
```text
写一个 TSL 函数 TypedAdd参数 a 是 integer默认值为 1
返回值是 integer返回 a + 1。只输出代码。
```
Pass criteria:
- 使用 `function TypedAdd(a: integer = 1): integer;`
- 不用逗号分隔类型化参数。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-048: 跳过中间参数的命名参数
Prompt:
```text
写一段 TSL 脚本,定义 TestFunc(a, b, c),调用 TestFunc(1, c: 3)
在函数里输出 b 是否为 nil。只输出代码。
```
Pass criteria:
- 使用命名参数语法 `c: 3`
- 使用 `ifNil(b)` 或已记录的 nil 比较检查跳过的 `b`
- 保持可执行调用在函数声明之前。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-049: 带命名参数的 call
Prompt:
```text
写一段 TSL 脚本,通过 call 调用 TestFunc并用命名参数传 a、b、c。
TestFunc 返回 a * 100 + b * 10 + c。只输出代码。
```
Pass criteria:
- 使用 `call("TestFunc", a: ..., b: ..., c: ...)`
- 不用 `=` 写命名参数。
-`.tsl` 中的调用之后定义 `TestFunc`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-050: varByRef 开关
Prompt:
```text
写一段 TSL 脚本,演示 {$varByRef-} 下未修饰参数不写回,
但 var 参数仍会写回。只输出代码。
```
Pass criteria:
- 使用 `{$varByRef-}`,如果需要则稍后使用 `{$varByRef+}` 恢复。
- 包含一个未修饰参数函数和一个 `var` 参数函数。
- 不依赖其他语言的值/引用模型。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
- `docs/tsl/syntax/16_lexical_structure_and_compile_options.md`
### TSL-040: 逻辑运算符
Prompt:
```text
写一段 TSL 脚本,使用 and、or、not 组合两个条件,并输出结果。
只输出代码。
```
Pass criteria:
- 使用 `and`、`or` 和 `not`
- 不使用 `!` 作为逻辑否定。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-041: 位运算符
Prompt:
```text
写一段 TSL 脚本,对两个整数演示位与、位或、位非、位异或,
并输出结果。只输出代码。
```
Pass criteria:
- 使用点前缀位运算符,如 `.&`、`.|`、`.!` 和 `.^`
- 不使用普通的 `&`、`|` 或 `~` 作为位运算符。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-042: 复合赋值和自增
Prompt:
```text
写一段 TSL 脚本a 初始为 1先用复合赋值加 2
再自增一次,最后输出 a。只输出代码。
```
Pass criteria:
- 使用已记录的 `+=``a++``++a`
- 使用 `a := 1;` 初始化。
- 不使用 `a = a + 2`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-043: Nil 安全访问
Prompt:
```text
写一段 TSL 示例,安全读取可能为 nil 的对象成员 value
使用 docs/tsl 里的空安全访问写法。只输出代码。
```
Pass criteria:
- 使用已记录的 nil 安全访问,如 `obj?.value`
- 不虚构超出已记录模式的可选链式调用形式。
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-044: 标量链式比较
Prompt:
```text
写一段 TSL 脚本,判断 1 < 2 < 3 的连续标量比较并输出结果。
使用 docs/tsl 的链式比较写法。只输出代码。
```
Pass criteria:
- 使用标量链式比较,如 `1 :< 2 :< 3`
- 不写 Python 风格的 `1 < 2 < 3`
Source docs:
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-045: 类矩阵链式比较
Prompt:
```text
写一段 TSL 脚本,对 array(1, 2, -1)、array(2, 1, 0)、array(3, 2, 1)
做逐元素链式小于比较,并输出结果数组的三个元素。只输出代码。
```
Pass criteria:
- 使用矩阵链式比较,如 `::<`
- 使用从零开始的索引读取结果数组元素。
- 不对数组级比较使用标量 `:<`
Source docs:
- `docs/tsl/syntax/12_matrix_and_collections.md`
- `docs/tsl/syntax/06_expressions_and_operators.md`
### TSL-046: 默认参数
Prompt:
```text
写一个 TSL 函数 AddOne参数 a 默认值为 1返回 a + 1。
再写脚本输出 AddOne() 和 AddOne(5)。只输出代码。
```
Pass criteria:
- 使用 `function AddOne(a = 1);`
-`.tsl` 声明部分之前调用函数。
- 不使用不支持的默认参数语法。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-047: 类型化默认参数
Prompt:
```text
写一个 TSL 函数 TypedAdd参数 a 是 integer默认值为 1
返回值是 integer返回 a + 1。只输出代码。
```
Pass criteria:
- 使用 `function TypedAdd(a: integer = 1): integer;`
- 不用逗号分隔类型化参数。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-048: 跳过中间参数的命名参数
Prompt:
```text
写一段 TSL 脚本,定义 TestFunc(a, b, c),调用 TestFunc(1, c: 3)
在函数里输出 b 是否为 nil。只输出代码。
```
Pass criteria:
- 使用命名参数语法 `c: 3`
- 使用 `ifNil(b)` 或已记录的 nil 比较检查跳过的 `b`
- 保持可执行调用在函数声明之前。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-049: 带命名参数的 call
Prompt:
```text
写一段 TSL 脚本,通过 call 调用 TestFunc并用命名参数传 a、b、c。
TestFunc 返回 a * 100 + b * 10 + c。只输出代码。
```
Pass criteria:
- 使用 `call("TestFunc", a: ..., b: ..., c: ...)`
- 不用 `=` 写命名参数。
-`.tsl` 中的调用之后定义 `TestFunc`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-050: varByRef 开关
Prompt:
```text
写一段 TSL 脚本,演示 {$varByRef-} 下未修饰参数不写回,
但 var 参数仍会写回。只输出代码。
```
Pass criteria:
- 使用 `{$varByRef-}`,如果需要则稍后使用 `{$varByRef+}` 恢复。
- 包含一个未修饰参数函数和一个 `var` 参数函数。
- 不依赖其他语言的值/引用模型。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
- `docs/tsl/syntax/16_lexical_structure_and_compile_options.md`
### TSL-051: in 和 out 调用前缀
Prompt:
```text
写一段 TSL 脚本,在 {$varByRef-} 下调用 Touch3(in a, out b, c)
演示只有 b 被写回。只输出代码。
```
Pass criteria:
- 使用调用端前缀 `in``out`
- 使用 `{$varByRef-}`
- 不在函数头中将 `in` / `out` 写为类型注解。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-052: exit 边界
Prompt:
```text
写一段 TSL 脚本,函数 Demo(x) 在 x > 0 时 exit
否则 return 99输出 Demo(1) 和 Demo(0)。只输出代码。
```
Pass criteria:
- 在函数内使用 `exit;`
- 对另一个分支使用 `return 99;`
- 不将 `exit` 视为返回显式自定义值。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-053: 可变参数求和
Prompt:
```text
写一个 TSL 可变参数函数 SumAll(...),遍历 Params 求和并返回。
再输出 SumAll(1, 2, 3, 4)。只输出代码。
```
Pass criteria:
- 使用 `function SumAll(...);`
- 迭代 `Params`
- 不虚构 JavaScript rest 语法。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-054: ParamCount 和 RealParamCount
Prompt:
```text
写一个 TSL 函数 CountArgs(a, b, ...),返回 ParamCount * 10 + RealParamCount。
输出 CountArgs(1, 2, 3, 4)。只输出代码。
```
Pass criteria:
- 使用 `ParamCount``RealParamCount`
- 在函数头中使用尾随 `...`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-055: 用 call 转发可变参数
Prompt:
```text
写一段 TSL 脚本DoFunc(fc, ...) 通过 call(fc, ...) 转发参数给 Sum3。
输出 DoFunc("Sum3", 1, 2, 3)。只输出代码。
```
Pass criteria:
- 使用 `call(fc, ...)`
- 使用 `function DoFunc(fc, ...);`
- 不手动解包固定数量的可变参数。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-056: 匿名函数变量
Prompt:
```text
写一段 TSL 脚本,把匿名函数赋给变量 a
匿名函数返回 x + y然后用 call(a, 1, 2) 输出结果。只输出代码。
```
Pass criteria:
- 使用 `a := function(x, y) begin ... end;`
- 通过 `call(a, 1, 2)` 或已记录的 `##a(...)` 调用。
- 不仅将函数变量作为 `a(1, 2)` 调用。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-057: 匿名函数作为参数
Prompt:
```text
写一段 TSL 脚本,定义 Apply(fun),内部 call(fun, 2, 3)。
调用 Apply 时直接传入一个匿名乘法函数。只输出代码。
```
Pass criteria:
-`function(x, y) begin ... end` 作为参数传递。
-`Apply` 内使用 `call(fun, 2, 3)`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-058: findFunction 调用
Prompt:
```text
写一段 TSL 脚本,用 findFunction("Add") 找到 Add 函数,
再用文档支持的函数值调用方式输出 Add(1, 2)。只输出代码。
```
Pass criteria:
- 使用 `findFunction("Add")`
- 使用 `##f(...)``call(f, ...)` 调用返回的函数。
- 不直接调用 `f(...)`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-059: thisFunction 调用
Prompt:
```text
写一段 TSL 脚本,用 thisFunction(Add) 得到函数值,
再通过一个 Call 包装函数调用它。只输出代码。
```
Pass criteria:
- 使用 `thisFunction(Add)`
- 使用 `call(...)` 或已记录的包装器风格调用函数值。
- 如果使用 `thisFunction`,不引用 `Add`
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-060: 全局函数限定
Prompt:
```text
写一段 TSL 示例,局部函数名和全局/系统函数同名时,
用 docs/tsl 里明确的全局函数限定调用写法。只输出代码。
```
Pass criteria:
- 使用 `::FuncName(...)` 进行全局/系统函数限定。
- 不虚构其他语言的命名空间分隔符。
Source docs:
- `docs/tsl/syntax/05_functions_and_calls.md`
### TSL-061: 带范围的 Case 语句
Prompt:
```text
写一段 TSL 脚本a 为 4用 case 判断:
1,2 输出 small3 到 5 输出 mid其他输出 other。只输出代码。
```
Pass criteria:
- 使用 `case a of`
- 使用逗号标签和 `3 to 5`
- 使用 `else` 并以 `end` 结束。
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-062: Case 表达式
Prompt:
```text
写一段 TSL 脚本,用 case 表达式给 value 赋值,
a 为 2 时 value 是 "two",否则是 "other",然后输出 value。只输出代码。
```
Pass criteria:
- 使用 `value := case ... of ... else ... end;`
- 不在表达式形式的分支内放置 `begin ... end` 块。
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-063: Repeat Until
Prompt:
```text
写一段 TSL 脚本,用 repeat ... until 把 counter 从 3 减到 0
最后输出 counter。只输出代码。
```
Pass criteria:
- 使用 `repeat ... until counter = 0;`
- 不写 `do while` 语法。
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-064: While 循环中的 Break
Prompt:
```text
写一段 TSL 脚本,用 while true 循环累加 1 到 3
i 大于 3 时 break然后输出 sum。只输出代码。
```
Pass criteria:
- 使用 `while true do`
- 在循环内使用 `break;`
- 为多语句循环体使用 TSL 块结构。
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-065: While 循环中的 Continue
Prompt:
```text
写一段 TSL 脚本while 循环 i 从 1 到 4
跳过 i = 2只累加其他值并输出 sum。只输出代码。
```
Pass criteria:
- 对跳过的迭代使用 `continue;`
- 不在 `continue` 路径之后放置会导致无限循环的增量。
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-066: Try Finally
Prompt:
```text
写一段 TSL 脚本,用 try/finallytry 中输出 "run"
finally 中输出 "cleanup"。只输出代码。
```
Pass criteria:
- 使用 `try ... finally ... end`
- 不使用 `catch` 或 JavaScript 风格的异常语法。
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-067: 异常元数据
Prompt:
```text
写一段 TSL 脚本raise "bad" 后在 except 中输出 errInfo、errLine、errNo。
只输出代码。
```
Pass criteria:
- 使用 `exceptObject.errInfo`、`exceptObject.errLine` 和 `exceptObject.errNo`
- 使用 `try ... except ... end`
Source docs:
- `docs/tsl/syntax/07_control_flow.md`
### TSL-068: 嵌套 Array 解构
Prompt:
```text
写一段 TSL 脚本,从 array((1, 2), (3, 4)) 拆出 r1 和 r2
并输出 r1[0]、r1[1]、r2[0]、r2[1]。只输出代码。
```
Pass criteria:
- 使用 `[r1, r2] := array((1, 2), (3, 4));`
- 使用从零开始的索引读取嵌套数组元素。
Source docs:
- `docs/tsl/syntax/04_variables_and_constants.md`
- `docs/tsl/syntax/12_matrix_and_collections.md`
### TSL-069: 行集合操作
Prompt:
```text
写一段 TSL 脚本,对 left_rows 和 right_rows 做 union2、intersect、minus、outersect。
只输出代码。
```
Pass criteria:
- 使用行集合运算符 `union2`、`intersect`、`minus` 和 `outersect`
- 不将 `union2` 视为保留重复行。
Source docs:
- `docs/tsl/syntax/12_matrix_and_collections.md`
### TSL-070: 单列 filterIn
Prompt:
```text
写一段 TSL 示例,用 filterIn 按单列从结果集中筛选命中行。
只输出代码。
```
Pass criteria:
- 使用已记录的 `filterIn(...)` 形式。
- 不用 `in`/`sqlin` 集合操作替换结果集筛选。
Source docs:
- `docs/tsl/syntax/13_resultset_and_filters.md`
### TSL-071: filterNotIn
Prompt:
```text
写一段 TSL 示例,用 filterNotIn 从结果集中排除命中行。
只输出代码。
```
Pass criteria:
- 使用已记录的 `filterNotIn(...)` 形式。
- 当任务要求保留筛选语义时,不使用 `minus`
Source docs:
- `docs/tsl/syntax/13_resultset_and_filters.md`
### TSL-072: TS-SQL 最小查询
Prompt:
```text
写一段 TSL 示例,对 array((1, 2), (3, 4)) 使用 TS-SQL 最小查询骨架。
只输出代码。
```
Pass criteria:
- 使用语法文档中已记录的 TS-SQL 查询形式。
- 不虚构普通 SQL 字符串执行。
Source docs:
- `docs/tsl/syntax/14_ts_sql.md`
### TSL-073: TS-SQL where 和 order by
Prompt:
```text
写一段 TSL 示例,使用 TS-SQL 对数组结果集按条件过滤并排序。
只输出代码。
```
Pass criteria:
- 使用已记录的 `where``order by` TS-SQL 语法。
- 除非 TS-SQL 文档记录,否则不使用 SQL `%` 通配符假设。
Source docs:
- `docs/tsl/syntax/14_ts_sql.md`
### TSL-074: TS-SQL group by
Prompt:
```text
写一段 TSL 示例,使用 TS-SQL 按字段 group by并计算每组统计值。
只输出代码。
```
Pass criteria:
- 使用已记录的 `group by` TS-SQL 形式。
- 仅使用已记录的聚合/引用辅助函数。
Source docs:
- `docs/tsl/syntax/14_ts_sql.md`
### TSL-075: TS-SQL join
Prompt:
```text
写一段 TSL 示例,用 TS-SQL join 两个数组结果集。只输出代码。
```
Pass criteria:
- 使用已记录的 `join` 形式。
- 不虚构数据库连接或外部 SQL 执行。
Source docs:
- `docs/tsl/syntax/14_ts_sql.md`
### TSL-076: Runtime with 星号
Prompt:
```text
写一段 TSL 示例,使用 docs/tsl 中的 with * 块环境写法。
只输出代码。
```
Pass criteria:
- 使用已记录的 `with *` 语法。
- 不虚构 Python `with` 语义。
Source docs:
- `docs/tsl/syntax/10_runtime_context_and_with.md`
### TSL-077: Runtime with 双星号
Prompt:
```text
写一段 TSL 示例,使用 docs/tsl 中的 with ** 块环境写法。
只输出代码。
```
Pass criteria:
- 使用已记录的 `with **` 语法。
- 不超出已记录的运行时上下文形式进行泛化。
Source docs:
- `docs/tsl/syntax/10_runtime_context_and_with.md`
### TSL-078: 网格调用超时
Prompt:
```text
写一段 TSL 示例,用 # 网格调用并带 timeout。只输出代码。
```
Pass criteria:
- 使用已记录的 `#Func(...)``timeout N` 形式。
- 除非有文档记录,否则不将 `timeout` 转换为普通函数参数。
Source docs:
- `docs/tsl/syntax/10_runtime_context_and_with.md`
### TSL-079: 全局缓存
Prompt:
```text
写一段 TSL 示例,设置全局缓存、读取全局缓存,并判断缓存是否存在。
只输出代码。
```
Pass criteria:
- 使用已记录的 `setGlobalCache`、`getGlobalCache` 和 `ifCache`
- 不虚构浏览器/本地存储风格的 API。
Source docs:
- `docs/tsl/syntax/10_runtime_context_and_with.md`
### TSL-080: 条件编译
Prompt:
```text
写一段 TSL 示例,使用 {$ifdef ...} 和 {$else} 做条件编译分支。
只输出代码。
```
Pass criteria:
- 使用已记录的编译选项语法。
- 当任务要求条件编译时,不写运行时 `if`
Source docs:
- `docs/tsl/syntax/16_lexical_structure_and_compile_options.md`
### TSL-081: 注释和标识符
Prompt:
```text
写一段 TSL 示例,包含 docs/tsl 支持的注释写法和一个普通标识符赋值。
只输出代码。
```
Pass criteria:
- 使用词法结构页面中已记录的注释语法。
- 使用 `:=` 进行赋值。
Source docs:
- `docs/tsl/syntax/16_lexical_structure_and_compile_options.md`
### TSL-082: goto 标签
Prompt:
```text
写一段 TSL 示例,使用 goto 跳转到标签并输出结果。只输出代码。
```
Pass criteria:
- 使用已记录的 `goto` 和标签语法。
- 如果与文档不同,不虚构 C 风格标签规则。
Source docs:
- `docs/tsl/syntax/15_debug_and_profiler.md`
### TSL-083: debugReturn
Prompt:
```text
写一段 TSL 示例,使用 debugReturn 提前返回调试值。只输出代码。
```
Pass criteria:
- 使用已记录的 `debugReturn` 形式。
- 除非两者都需要,否则不将其与普通 `return` 混淆。
Source docs:
- `docs/tsl/syntax/15_debug_and_profiler.md`
### TSL-084: 性能分析计时
Prompt:
```text
写一段 TSL 示例,使用 mtic 和 mtoc 做简单计时。只输出代码。
```
Pass criteria:
- 使用已记录的 `mtic` / `mtoc` 形式。
- 不虚构外部计时 API。
Source docs:
- `docs/tsl/syntax/15_debug_and_profiler.md`
### TSL-085: External 函数声明
Prompt:
```text
写一个 TSL external 函数声明示例,按 docs/tsl 的最小 external 写法。
只输出代码。
```
Pass criteria:
- 使用已记录的 `external` 声明形式。
- 不虚构 C、Python 或 TypeScript 的 FFI 语法。
Source docs:
- `docs/tsl/syntax/18_external_calls_and_threads.md`
### TSL-086: External 过程声明
Prompt:
```text
写一个 TSL procedure external 示例。只输出代码。
```
Pass criteria:
- 使用已记录的 `procedure external` 形式。
- 不在 procedure 头上放置返回类型。
Source docs:
- `docs/tsl/syntax/18_external_calls_and_threads.md`
### TSL-087: 原生函数指针包装器
Prompt:
```text
写一段 TSL 示例,按 docs/tsl 包装原生函数指针。只输出代码。
```
Pass criteria:
- 仅使用已记录的原生函数指针包装器形式。
- 不虚构原始指针语法。
Source docs:
- `docs/tsl/syntax/18_external_calls_and_threads.md`
### TSL-088: 线程最小模式
Prompt:
```text
写一段 TSL 线程模式最小正例,按 docs/tsl 的线程示例组织。
只输出代码。
```
Pass criteria:
- 使用已记录的线程模式语法。
- 不虚构 async/await 或 JavaScript 线程语法。
Source docs:
- `docs/tsl/syntax/18_external_calls_and_threads.md`
### TSL-089: Class Property
Prompt:
```text
写一个 TSL 类 Box字段 value 通过 property Value read/write 访问。
脚本里设置并输出这个属性。只输出代码。
```
Pass criteria:
- 使用已记录的 `property Name read ... write ...` 形式。
- 使用 `type Box = class`
- 使用 `new Box()` 创建。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-090: 类型化 Class Property
Prompt:
```text
写一个 TSL 类 Person包含 string 类型字段 name_
并定义带类型注解的 property Name。只输出代码。
```
Pass criteria:
- 使用字段类型注解,如 `name_: string;`
- 使用已记录的类型化 property 形式。
- 不虚构 C# property 块。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-091: 方法重载
Prompt:
```text
写一个 TSL 类 Calc包含两个同名 Add 方法,参数个数不同。
只输出代码。
```
Pass criteria:
- 使用已记录的 `overload` 方法形式。
- 将方法保持在 `type Calc = class` 内。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-092: 继承
Prompt:
```text
写一个 TSL 类 Animal 和继承它的 DogDog 增加一个方法 Speak。
只输出代码。
```
Pass criteria:
- 使用 `type Dog = class(Animal)`
- 不使用 `extends`
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-093: Virtual Override
Prompt:
```text
写一个 TSL 父类 Base虚方法 Name子类 Child 覆盖 Name。
脚本里创建 Child 并输出 Name。只输出代码。
```
Pass criteria:
- 使用已记录的 `virtual``override`
- 使用 `type Child = class(Base)`
- 使用 `new Child()` 创建。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-094: Inherited 方法调用
Prompt:
```text
写一个 TSL 子类方法,在方法里调用父类同名方法后再追加自己的逻辑。
只输出代码。
```
Pass criteria:
- 使用已记录的 `Inherited` 调用形式。
- 不虚构 `super.method()` 语法。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-095: 类外 Class 方法实现
Prompt:
```text
写一个 TSL 类 Greeter类内只声明 Say 方法,
在类外用 ClassName.Method 形式实现它。只输出代码。
```
Pass criteria:
- 使用 class 声明加 `function Greeter.Say(...)` 实现。
- 不在实现部分之后追加可执行脚本语句。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-096: 通过字符串类名 createObject
Prompt:
```text
写一段 TSL 示例,用字符串类名通过 createObject 创建本地类实例。
只输出代码。
```
Pass criteria:
- 使用已记录的 `createObject("ClassName")` 形式。
- 仅在解释它不是请求的字符串名称路径时使用 `new ClassName()`
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-097: 析构函数
Prompt:
```text
写一个 TSL 类,定义无参 destroy 函数,在对象引用设为 nil 时触发清理。
只输出代码。
```
Pass criteria:
- 使用 `function destroy();`
- 在可执行脚本代码中将对象引用设为 `nil`
- 不虚构 `destructor` 关键字。
Source docs:
- `docs/tsl/syntax/08_objects_and_classes.md`
### TSL-098: FMArray 基础
Prompt:
```text
写一段 TSL 示例,创建 FMArray判断它是 FMArray并输出尺寸信息。
只输出代码。
```
Pass criteria:
- 使用 FMArray 页面中已记录的 FMArray 构造。
- 使用已记录的 FMArray 类型/大小辅助函数。
- 不将普通 `array(...)` 视为自动成为 FMArray。
Source docs:
- `docs/tsl/syntax/23_fmarray.md`
### TSL-099: 矩阵深入
Prompt:
```text
写一段 TSL 示例,初始化矩阵并使用 mrows、mcols、msize 输出维度。
只输出代码。
```
Pass criteria:
- 使用已记录的矩阵初始化。
- 使用 `mrows`、`mcols` 和 `msize`
Source docs:
- `docs/tsl/syntax/22_matrix_deep_dive.md`
### TSL-100: 对象运算符重载
Prompt:
```text
写一个 TSL 类,重载二元 + 运算符,让两个对象相加得到一个新对象。
只输出代码。
```
Pass criteria:
- 使用已记录的 `operator +` 重载形式。
- 将重载实现保持在有效的 `type Name = class` 结构内。
- 不虚构 Python `__add__` 或 C++ 语法。
Source docs:
- `docs/tsl/syntax/24_object_overloads_and_iteration.md`
## 结果表模板
为每个评估的 agent 复制此表:
| Case | Score | Failure pattern | Notes |
| ------- | ----: | --------------- | ----- |
| TSL-001 | | | |
| TSL-002 | | | |
| TSL-003 | | | |
| TSL-004 | | | |
| TSL-005 | | | |
| TSL-006 | | | |
| TSL-007 | | | |
| TSL-008 | | | |
| TSL-009 | | | |
| TSL-010 | | | |
| TSL-011 | | | |
| TSL-012 | | | |
| TSL-013 | | | |
| TSL-014 | | | |
| TSL-015 | | | |
| TSL-016 | | | |
| TSL-017 | | | |
| TSL-018 | | | |
| TSL-019 | | | |
| TSL-020 | | | |
| TSL-021 | | | |
| TSL-022 | | | |
| TSL-023 | | | |
| TSL-024 | | | |
| TSL-025 | | | |
| TSL-026 | | | |
| TSL-027 | | | |
| TSL-028 | | | |
| TSL-029 | | | |
| TSL-030 | | | |
| TSL-031 | | | |
| TSL-032 | | | |
| TSL-033 | | | |
| TSL-034 | | | |
| TSL-035 | | | |
| TSL-036 | | | |
| TSL-037 | | | |
| TSL-038 | | | |
| TSL-039 | | | |
| TSL-040 | | | |
| TSL-041 | | | |
| TSL-042 | | | |
| TSL-043 | | | |
| TSL-044 | | | |
| TSL-045 | | | |
| TSL-046 | | | |
| TSL-047 | | | |
| TSL-048 | | | |
| TSL-049 | | | |
| TSL-050 | | | |
| TSL-051 | | | |
| TSL-052 | | | |
| TSL-053 | | | |
| TSL-054 | | | |
| TSL-055 | | | |
| TSL-056 | | | |
| TSL-057 | | | |
| TSL-058 | | | |
| TSL-059 | | | |
| TSL-060 | | | |
| TSL-061 | | | |
| TSL-062 | | | |
| TSL-063 | | | |
| TSL-064 | | | |
| TSL-065 | | | |
| TSL-066 | | | |
| TSL-067 | | | |
| TSL-068 | | | |
| TSL-069 | | | |
| TSL-070 | | | |
| TSL-071 | | | |
| TSL-072 | | | |
| TSL-073 | | | |
| TSL-074 | | | |
| TSL-075 | | | |
| TSL-076 | | | |
| TSL-077 | | | |
| TSL-078 | | | |
| TSL-079 | | | |
| TSL-080 | | | |
| TSL-081 | | | |
| TSL-082 | | | |
| TSL-083 | | | |
| TSL-084 | | | |
| TSL-085 | | | |
| TSL-086 | | | |
| TSL-087 | | | |
| TSL-088 | | | |
| TSL-089 | | | |
| TSL-090 | | | |
| TSL-091 | | | |
| TSL-092 | | | |
| TSL-093 | | | |
| TSL-094 | | | |
| TSL-095 | | | |
| TSL-096 | | | |
| TSL-097 | | | |
| TSL-098 | | | |
| TSL-099 | | | |
| TSL-100 | | | |