补全:BIN 和 PRINT

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

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

本条的指令集(每条是一个元组):

PUSH 值        把一个常量压栈          LOAD 名      把变量的值压栈
DEFINE 名      弹栈、在当前层登记       STORE 名     弹栈、沿链改变量
BIN 运算符     弹两个、算、压回一个     PRINT        弹栈、打印
POP            弹栈丢掉                 JUMP 目标    跳到第几条
JUMP_IF_FALSE 目标  弹栈,假就跳          ENTER / LEAVE   进块开一层 / 出块关一层
MAKE_FN 名 参数 代码   造一个函数值登记   CALL 名 个数   弹参数、压新帧
RETURN         弹栈当返回值、弹帧、压回调用者的栈

补全 run_code 里 BIN 的算术部分(弹右弹左,+ - * / 四种,/ 整除且除以零抛 RunError)和 PRINT(布尔打 true/false)。比较和类型检查已给。

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

                        
👩‍🏫
AI
💬 题目评论

全部评论