🐛 fix(tsl-syntax-reference): route derived rules and bound section size

This commit is contained in:
csh
2026-08-20 15:49:41 +08:00
parent ca6830af9f
commit 5a8d95ebcf
7 changed files with 420 additions and 145 deletions
@@ -68,7 +68,7 @@
- `createObject(...)` 示例只在字符串类名、类类型变量或跨 `unit` 路径场景复制。
- `property` 类型注解只有在已有类型名证据时生成;不要为了完整性发明说明性类型名。
### 最小类与声明位置
## 最小类与声明位置
<!-- section-id: syntax-08-004 -->
@@ -180,7 +180,7 @@ writeLn(a);
- 函数体内部声明类会报 `invalid statement`
- 在松散语句脚本里,`type MyClass = class ... end;` 之后继续写 `writeLn(a);` 也会报 `invalid statement`
### 字段、静态成员、常量与可见性
## 字段、静态成员、常量与成员访问
<!-- section-id: syntax-08-005 -->
@@ -275,6 +275,12 @@ end;
- `c.Inc()` 输出 `11`
## 成员可见性与继承访问
<!-- section-id: syntax-08-013 -->
<!-- tags: 成员访问可见性, private protected public, 可见性, 访问权限, 子类访问 -->
可见性 `private` / `protected` / `public`
代码块身份:可直接照写示例
@@ -396,7 +402,7 @@ end;
- 子类里直接调用父类 `private` 方法也会在执行时报错。
- `private` / `protected` 方法访问也遵循同样边界:外部不能调 `private` / `protected` 方法,子类只能调 `protected` 方法,不能调 `private` 方法。
### 构造函数边界
## 构造函数边界
<!-- section-id: syntax-08-006 -->
@@ -427,11 +433,11 @@ end;
- 上述例子里的 `a.value` 输出 `<NIL>`,说明 `private create` 没有执行。
- `protected create``createObject("A", ...)``createObject(class(A), ...)` 也按同一规则处理;构造函数应保持 `public`
### 属性、类型注解与类外实现
## 基础 property 与类型注解
<!-- section-id: syntax-08-007 -->
<!-- tags: property, 读写属性, getter setter, 方法写在类外 -->
<!-- tags: property, 读写属性, getter setter -->
基础 `property`
@@ -530,6 +536,12 @@ abc
abc
```
## 类内声明与类外实现
<!-- section-id: syntax-08-014 -->
<!-- tags: 类外实现, 方法写在类外, 类内声明, 外部实现, 类方法实现 -->
类内声明、类外实现的带类型重载方法:
代码块身份:可直接照写示例
@@ -590,6 +602,12 @@ left
left
```
## 索引与固定 index property
<!-- section-id: syntax-08-015 -->
<!-- tags: 索引 property, 固定索引 property, index property, 固定整数索引, 固定字符串索引 -->
索引型 `property`
代码块身份:可直接照写示例
@@ -695,6 +713,12 @@ end;
- `obj.school` 输出 `math`
- `obj.idx("High school")` 也输出 `math`
## 参数化 property 与 accessor
<!-- section-id: syntax-08-016 -->
<!-- tags: 参数化 property, property 参数, accessor, getter setter 参数 -->
参数化 `property`
代码块身份:可直接照写示例
@@ -762,7 +786,7 @@ end;
- `write setItem` 这种“写方法接参数个数 + 赋值值”的写法可以通过
- 上述例子中的 `obj.Item(2)` 输出 `x`
### 对象创建与类类型
## 对象创建与类类型
<!-- section-id: syntax-08-008 -->
@@ -916,11 +940,11 @@ end;
- `findClass("MathBox").Add(...)` 可以调用类方法
- 上述例子依次输出 `7``11`
### 重载继承与析构
## 重载继承
<!-- section-id: syntax-08-009 -->
<!-- tags: 继承, 父类子类, 方法重载, 同名不同参, 析构, 对象销毁时, 调用父类方法, 父类同名方法, inherited -->
<!-- tags: 继承, 父类子类, 方法重载, 同名不同参, 析构, 对象销毁时, 调用父类方法, 父类同名方法 -->
`overload` 方法:
@@ -1036,6 +1060,12 @@ end;
- 当多个父类存在同名方法时,本例优先命中第一个父类 `A`
- 上述例子中的 `obj.Speak()` 输出 `1`
## 虚方法、覆盖与隐藏
<!-- section-id: syntax-08-017 -->
<!-- tags: 方法隐藏 hide, hide, override, virtual, 覆盖与隐藏 -->
基础 `virtual` / `override`
代码块身份:可直接照写示例
@@ -1133,6 +1163,12 @@ end;
- `c.Ask()` 输出 `child``virtual` + `override` 后,父类方法内部的 `Who()` 定向到子类实现
- 这就是 hide 与 override 的关键区别:hide 只影响直接调用,override 改变了所有经由基类的间接调用
## 祖先类调用与类型视图
<!-- section-id: syntax-08-018 -->
<!-- tags: 调用父类 inherited, inherited, Inherited, 祖先类调用, 父类方法, 类型视图 -->
`class(BaseClass, ObjectName).MethodName()`
代码块身份:可直接照写示例
@@ -1257,6 +1293,12 @@ end;
- `Inherited BaseValue(5)` 可以显式调用父类指定方法
- 上述例子依次输出 `6``9`
## 析构与 self 工厂
<!-- section-id: syntax-08-019 -->
<!-- tags: 析构 destroy, destroy, 对象销毁, self 工厂, self(0), self(1) -->
析构函数 `destroy`
代码块身份:可直接照写示例
@@ -1323,7 +1365,7 @@ end;
- `self(1)` 返回的对象在这个例子里是 `ChildBox`,因此输出 `1`
- `self(0)` 返回的对象在这个例子里不是 `ChildBox`,因此输出 `0`
### 跨 unit 类路径
## 跨 unit 类路径
<!-- section-id: syntax-08-010 -->