补全:叶子和变量
(每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数值 Closure(name, params, body, env)、用来「跳出函数」的 ReturnSignal。)
树的形状(05 的形状加新节点):
("num", 3) ("str", "hi") ("var", "x", 行, 列) ("bin", "+", 左, 右, 行, 列) ("call", "add", [参数…], 行, 列)
("let", "x", e, 行, 列) ("assign", "x", e, 行, 列) ("print", e, 行, 列) ("return", e, 行, 列)
("fn", "add", ["a","b"], 体, 行, 列) ("if", c, 体, 否则, 行, 列) ("while", c, 体, 行, 列)补全 eval_ 的前两种情况:num / str 直接交回值;var 用 env.get(名, 行, 列, stack)。二元运算先固定交回 0。
全部评论