Files
playbook/skills/tsl-syntax-reference/data
cshandClaude Fable 5 2e8c46e152 📝 docs(tsl-syntax-reference): document verified facts from FAQ corpus
从 FAQ 语料(2018 篇镜像)与参考页做完 169 条逐条差集,补入 6 组此前未收录的语言
事实。每条先用 TSL.exe 实跑观察行为,再收敛成 39 条断言的回归门,在 TSLGen2、
AnalyseNG.NET、TSL 三个解释器上均通过后才写入。

- 16 页:0/0 得 nan、2/0 得 inf;nan 的 = > < >= <= 恒假而 <> 为真;nan 沿算术
  传播;nil 在乘除减里按 0 参与
- 04 页:整体赋值免声明,但对未建立的变量写单元格赋值会报「变量类型不是Array」
- 07 页:相邻两个 if 是两条独立语句都会执行;for..in 单控制变量拿到的是键不是值;
  二维数组按行推进,行本身是数组(新增 syntax-07-013)
- 21 页:子矩阵赋值语句求值为 0;t[:,:] 按位置复制不按列名对齐(新增
  syntax-21-019);| 列并时同名字符串列键由右操作数覆盖(新增 syntax-21-018)
- 13 页:select 输出列表同名列后者覆盖前者,须用 as 改名(新增 syntax-13-032)

三条 FAQ 说法实跑不复现,故未写入:12574 的括号消歧、19857 的 -2147483648
字面量限制、31474 的 :. bugfix 记录。15305/11045 的用户/公用/共享函数同名解析
优先级需要服务端多账号环境,本地无法验证,仍为已知缺口。

lexicon.json 为 16 页补两个页级 alias,使 nan/nil 语义能被自然语言查询命中。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 20:58:10 +08:00
..

检索词表(lexicon.json

lexicon.jsonscripts/lookup.py 的策展检索数据,与引擎逻辑分离维护。 两张表都只影响检索,不是事实正文。查询输入应从用户原话提取错误文本、标识符 或单一语法要素,保留原写法但不传完整礼貌句。

query_synonyms —— 口语同义词

中文口语词 → TSL 术语的展开(如「打印」→ 输出 / writeLn)。策展纪律:

  • 同义词必须落在目标章节已有的词面上,否则不产生区分度。用户说的词在 参考页正文里出现 0 次时,页级 alias 只能把整页抬起来,页内仍需要词法 信号才能选中正确章节——节级词汇桥(如「交集」→ intersect)补的就是 这一层。
  • 不要展开成泛化的中文概念词(如「集合运算」会命中别页交叉引用小节标题)。

page_intent_aliases —— 页级意图短语

整句口语短语 → 参考页文件名的路由(命中一条 +80 分,是页级路由的唯一强 信号)。约束:

  • 键必须与 references/ 下的文件名完全一致;每个参考页至少一条短语。 键写错或参考页改名后 _intent_score 会静默返回 0 分,该页失去自然语言 入口。lookup.py --check 负责拦截页键漂移,行为回归测试负责拦截排序漂移。

Skill 维护与校验

Section ID 来自标题下的显式 <!-- section-id: ... --> 元数据,不从标题派生。改标题 时保留原 ID;新增章节时分配新 ID,不重排或复用旧 ID。quickstart 派生规则必须与 专题事实逐字一致,并显式给出可由 --section 直接取回的 Owner Section。

大型参考页必须把可检索事实切成受控大小的叶子 Section,避免一次精确取回返回数百行。 --check 会校验大页的叶子 Section 粒度;拆分时保留已有 ID,把新主题分配给新 ID。

改动本 Skill、参考页、data/ 词表或 lookup 实现后运行:

python skills/tsl-syntax-reference/scripts/lookup.py --check
python -m unittest test.test_tsl_syntax_reference -v

--check 会校验 page_intent_aliases 的键与 references/ 参考页一一对应: 键指向不存在的页、或某页没有自然语言入口都会报错。新增参考页时必须同时 在这里补一条页级意图短语。它只做结构检查,不验证自然语言排序;原始 alias、 助词变体、弱命中和已知真实问法由专属测试覆盖。

--check 还覆盖显式 ID、标题层级、quickstart 派生与 Owner Section、代码块身份、 本地链接和大页粒度;它不证明事实语义、检索排序或示例运行结果。仓库级 unittest 负责 CLI、排序与退出码行为。