补全:把 VM 的环境当根
(每道题开头都有同一段:06 的词法/语法/show、Env、RunError;本条加的 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 都拴着一个环境,那个环境也活着)。
全部评论