📝 docs(tsl): align agent-facing guidance
This commit is contained in:
@@ -14,9 +14,18 @@
|
||||
|
||||
回答“基本类型怎么写、数组和字符串怎么索引、哪些值规则属于语言级事实”。
|
||||
|
||||
## Agent 值写法判断流程
|
||||
|
||||
1. 普通值优先从整数、实数、普通字符串、布尔和 `array(...)` 起手。
|
||||
2. 字符串默认用普通字符串;`L""` / `U""` 只在编码或宽串场景,并且必须按本页已验证边界写。
|
||||
3. 看到 `array(...)` 时,先判断要顺序数组还是字符串键表:顺序数组用位置元素,字符串键表用 `"Key": value`。
|
||||
4. 写下标前先判断对象类别:顺序数组和二进制缓冲区下标从 `0` 开始,字符串下标从 `1` 开始。
|
||||
5. 写字符串区间前先记住 `s[start:end]` 的 `end` 会被包含;不要按半开区间推断。
|
||||
6. 没有已验证代码块时不要发明值写法;尤其不要从 JSON、JavaScript、Pascal 或 C 字符串规则直接迁移。
|
||||
|
||||
## 必须记住的规则
|
||||
|
||||
- 最先掌握的几类值是:整数、实数、字符串、布尔和 `array`。
|
||||
- 最先掌握的几类值是:整数、实数、普通字符串、布尔和 `array(...)`。
|
||||
- 普通字符串既可以用双引号,也可以用单引号。
|
||||
- 同类引号本身可以通过连续写两个同类引号放进字符串里。
|
||||
- `\\`、`\"`、`\n` 这类基础转义已验证可用。
|
||||
@@ -55,13 +64,26 @@ name := "ABC";
|
||||
flag1 := true;
|
||||
flag2 := false;
|
||||
items := array(1, 2, 3);
|
||||
WriteLn(count);
|
||||
WriteLn(price);
|
||||
WriteLn(name);
|
||||
WriteLn(flag1);
|
||||
WriteLn(flag2);
|
||||
WriteLn(items[1]);
|
||||
```
|
||||
|
||||
其中已经验证:
|
||||
代码块身份:已验证输出片段
|
||||
|
||||
- `true` 可以直接写成布尔值。
|
||||
- `false` 可以直接写成布尔值。
|
||||
- 运行输出里,`true` / `false` 分别表现为 `1` / `0`。
|
||||
```text
|
||||
1
|
||||
12.5
|
||||
ABC
|
||||
1
|
||||
0
|
||||
2
|
||||
```
|
||||
|
||||
代码块说明:`true` / `false` 可以直接写成布尔值;运行输出里分别表现为 `1` / `0`。
|
||||
|
||||
普通字符串字面量:
|
||||
|
||||
@@ -404,25 +426,29 @@ WriteLn("A"#13#10"B");
|
||||
代码块身份:已验证可执行示例
|
||||
|
||||
```tsl
|
||||
arr := array(10, 20, 30);
|
||||
hash := array("Code": "0001", "Price": 12.3);
|
||||
items := array(10, 20, 30);
|
||||
row := array("Code": "0001", "Price": 12.3);
|
||||
s := "ABC";
|
||||
WriteLn("ARR0=", arr[0]);
|
||||
WriteLn("ARR1=", arr[1]);
|
||||
WriteLn("HASH=", hash["Code"]);
|
||||
WriteLn("STR1=", s[1]);
|
||||
WriteLn("STR2=", s[2]);
|
||||
WriteLn("STR3=", s[3]);
|
||||
WriteLn(items[0]);
|
||||
WriteLn(items[1]);
|
||||
WriteLn(row["Code"]);
|
||||
WriteLn(s[1]);
|
||||
WriteLn(s[2]);
|
||||
WriteLn(s[3]);
|
||||
```
|
||||
|
||||
已验证运行结果对应关系:
|
||||
代码块身份:已验证输出片段
|
||||
|
||||
- `arr[0] = 10`
|
||||
- `arr[1] = 20`
|
||||
- `hash["Code"] = "0001"`
|
||||
- `s[1] = "A"`
|
||||
- `s[2] = "B"`
|
||||
- `s[3] = "C"`
|
||||
```text
|
||||
10
|
||||
20
|
||||
0001
|
||||
A
|
||||
B
|
||||
C
|
||||
```
|
||||
|
||||
代码块说明:顺序数组 `items` 从 `0` 开始,字符串键表 `row` 用字符串键访问,字符串 `s` 从 `1` 开始。
|
||||
|
||||
二进制缓冲区:
|
||||
|
||||
@@ -456,10 +482,13 @@ s := "ABCDE";
|
||||
WriteLn(s[2:4]);
|
||||
```
|
||||
|
||||
已验证运行结果:
|
||||
代码块身份:已验证输出片段
|
||||
|
||||
- 输出 `BCD`
|
||||
- 这说明字符串区间 `2:4` 会包含结束位 `4`
|
||||
```text
|
||||
BCD
|
||||
```
|
||||
|
||||
代码块说明:字符串区间 `2:4` 会包含结束位 `4`。
|
||||
|
||||
字符串替换子串:
|
||||
|
||||
@@ -540,6 +569,12 @@ WriteLn(s[0]);
|
||||
|
||||
上面这类写法在运行时会报字符串下标越界。
|
||||
|
||||
代码块身份:已验证输出片段
|
||||
|
||||
```text
|
||||
String index out of bounds
|
||||
```
|
||||
|
||||
代码块身份:反例 / 不可照写
|
||||
|
||||
```text
|
||||
|
||||
Reference in New Issue
Block a user