feat: 让 Endor 源码执行实数运算、比较与条件循环 #2

Merged
Zayden-Jung merged 1 commits from codex/script-control-flow into main 2026-11-12 03:06:12 +00:00
Collaborator

Endor 目前不能执行源码四则运算、比较或条件循环,迫使动画与交互逻辑落到宿主。本改动让这些普通应用逻辑由实际 Endor 字节码执行;Tessera 的图形接口只负责通用资源、排版和绘制。

实现:

  • 前端增加 if/else、while、六种比较;同步 ASDL、PEG、Rust AST/visitor、TypeScript 与 JSON Schema 生成物。
  • 编译器递归收集函数局部变量、合并分支确定初始化;循环按可能执行零次分析。相对跳转通过 EXTENDED_ARG 固定点布局,覆盖长分支/回跳。
  • VM 增加 BinaryArithmetic / UnaryNegate,立即值和装箱 Number 复用同一实数运算;文本 + 文本为有界连接。
  • 整数、十进制、有理数精确计算,显式 BinaryFloat 操作数才选择浮点算术;混合比较避免大整数丢精度,保留 IEEE NaN/负零语义。输入/指数/结果有单次计算预算,复数算术和数值哈希仍未实现。
  • 修正两项类测试把多个顶层语句误交给单条 Interactive 模式的问题,以及协程预算测试在限制处已 ReturnValue 的错误夹具;没有放宽运行时预算。

验证:本地全 workspace 测试(含 doctest)通过;Clippy --workspace --all-targets -D warnings、cargo fmt --all -- --check、AST 生成器 --check、git diff --check 均通过。新增测试覆盖精度、溢出回退、除零/超限、分支初始化、长跳转和循环预算。

限制:仍无 and/or/not、布尔字面量、for、break/continue、导入源码语法。条件可使用 Bool 比较结果或其他真值;不宣称完整语言实现。

分支 codex/script-control-flow → main;提交 5ff1c68。供 Tessera 脚本示例 PR 依赖。等待用户手动合并,bot 未合并。

Endor 目前不能执行源码四则运算、比较或条件循环,迫使动画与交互逻辑落到宿主。本改动让这些普通应用逻辑由实际 Endor 字节码执行;Tessera 的图形接口只负责通用资源、排版和绘制。 实现: - 前端增加 if/else、while、六种比较;同步 ASDL、PEG、Rust AST/visitor、TypeScript 与 JSON Schema 生成物。 - 编译器递归收集函数局部变量、合并分支确定初始化;循环按可能执行零次分析。相对跳转通过 EXTENDED_ARG 固定点布局,覆盖长分支/回跳。 - VM 增加 BinaryArithmetic / UnaryNegate,立即值和装箱 Number 复用同一实数运算;文本 + 文本为有界连接。 - 整数、十进制、有理数精确计算,显式 BinaryFloat 操作数才选择浮点算术;混合比较避免大整数丢精度,保留 IEEE NaN/负零语义。输入/指数/结果有单次计算预算,复数算术和数值哈希仍未实现。 - 修正两项类测试把多个顶层语句误交给单条 Interactive 模式的问题,以及协程预算测试在限制处已 ReturnValue 的错误夹具;没有放宽运行时预算。 验证:本地全 workspace 测试(含 doctest)通过;Clippy --workspace --all-targets -D warnings、cargo fmt --all -- --check、AST 生成器 --check、git diff --check 均通过。新增测试覆盖精度、溢出回退、除零/超限、分支初始化、长跳转和循环预算。 限制:仍无 and/or/not、布尔字面量、for、break/continue、导入源码语法。条件可使用 Bool 比较结果或其他真值;不宣称完整语言实现。 分支 codex/script-control-flow → main;提交 5ff1c68。供 Tessera 脚本示例 PR 依赖。等待用户手动合并,bot 未合并。
codex-bot added 1 commit 2026-11-12 02:51:24 +00:00
Zayden-Jung merged commit 827b96b2f7 into main 2026-11-12 03:06:12 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Zayden-Jung/endorphin-aster-vm#2