# 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,保存到 value;Inc 方法把 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 输出 small;3 到 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/finally,try 中输出 "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 和继承它的 Dog,Dog 增加一个方法 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 | | | |