补全:表达式语句
(每道题开头都有同一段:这门语言的 parser、show()、环境 Env(define / find / get / set,get 和 set 查不到就抛 RunError)、函数值 Closure(name, params, body, env)、用来「跳出函数」的 ReturnSignal。)
(这一节还带着完整的解释器:eval_(节点, env, out, stack) 算表达式,exec_ / exec_block 执行语句,call 调函数,run(src) 把 print 的东西用 | 连起来交回,run_safe 把运行时错误也变成一行文字。)
上一题绕了个弯:这门语言没有「表达式语句」,调用只能出现在 print / let / return 里。给 parser 加上:一个以 IDENT 开头、后面跟 ( 的语句,解析成 ("expr", 调用节点, 行, 列);exec_ 遇到它就 eval 一下、丢掉值。补全 stmt2 和 exec2。
全部评论