补全:把 VM 的环境当根

👁️ 3 人浏览 💬 0 人评论 ❤️ 添加收藏

(每道题开头都有同一段:06 的词法/语法/showEnvRunError;本条加的 compile_expr / compile_stmt / compile_block / compile_program(树 → 指令列表)、listing(code)(把指令列表打成「序号:指令 操作数|…」)、Code(函数值:名、参数、代码、定义时的环境)、run_code(code, env, out)(栈式 VM,交回执行的指令条数)、run_vm(src)。)

把运行时和 VM 连起来:补全 live_names(env)——从一个 Env 出发,沿父链收集所有变量名(这些就是「根」);再补 closure_env_count(env):值里有几个 Code(每个 Code 都拴着一个环境,那个环境也活着)。

提交你的答案
请登录后提交答案。
去登录
代码编辑器
Ctrl + Enter 运行
本次输入:
输出:

                        
👩‍🏫
AI
💬 题目评论

全部评论