Files
Interpreter/tests
Admin 26256a36b9 扩充内置功能块为 8 个:TON/TOF/TP/CTU/CTD/CTUD/R_TRIG/F_TRIG。
- isa:CAL_* 操作码连续占 24..31(CALL/RET 后移为 32/33,kOpCount=34);disasm 支持 5 个新操作码
- 词法/语法/链接:新 8 个关键字与冻结布局(TP=in/pt/q/et、CTD=cd/ld/pv/q/cv、
  CTUD=cu/cd/r/lu/pv/qu/qd/cv、R_TRIG/F_TRIG=clk/q)
- VM:do_cal 全 8 个语义(TP 脉冲、CTD 递减、CTUD 双向+装载、R_TRIG 上升沿、F_TRIG 下降沿);
  edge_prev_ 每槽 2 字节存边沿上次输入;exec_one 分发补 5 个新操作码
- 验证:TP 30ms 脉冲 2 周期、CTD 装载+递减到 q=1、CTUD cu/cd 双向、R/F_TRIG 交替;
  ctest 11/11 全绿
- 文档:指令与映像/词法/初步计划/符号表与链接/指令执行/扫描周期/使用说明 同步
2026-08-21 20:38:27 +08:00
..

tests

自动化用例,由顶层 enable_testing() 接入 CTest。

可以 add_testSTCompiler / BytecodeExecutor(编译→执行管线),或直接链接 compiler + vm 做单元断言。样例工程数据按「一份 toml + 若干 .st」分子目录存放,不要做成 library。

用例目录(cases/

每个用例一个子目录:project.toml + .st + EXPECTED.md(期望:通过 / 报哪类错)。清单与编号见 Doc/初步计划.md 12.2 节,共 20 个:

  • 正例:01 空 MAIN、02 BOOL、03 短路、04 IF、05 WHILE、07 算术、08 TIME、09 GVL+EXTERNAL、13 FUNCTION、15 FB、17 TON、18 TOF/CTU、20 line1
  • 负例(编译错误/链接失败):10 非 GVL 写全局、11 同名全局、12 io.var 未声明、14 FUNCTION 写全局、16 未声明实例、19 循环调用
  • 运行时故障:06 cycle_limit 打满

12.2 完成标准:目录和期望表齐,此时大部分还编不过,属正常。实现阶段逐个点亮。

第一版要冻的

  • 关键字表与约 20 个样例程序
  • 约 20 条指令编码
  • 符号表字段:名字、种类、类型、地址、源文件
  • 链接错误:重复 VAR_GLOBAL、非 GVL 文件写全局、io.var 未声明

给人看的最小闭环放 examples/line1/,本目录放断言和负例。