自制脚本语言(6) 解释器

本文介绍了一种脚本语言的解释器设计,采用访问者模式实现,以确保与语法树的隔离。解释器遍历语法树执行代码,并在运行时环境中维护上下文、变量表和栈帧。解释执行虽效率较低,但便于实现和理解。在解释过程中,利用RT_Env、RT_Frame和RT_CtrFlow类管理运行时状态,控制流程如break、continue和return。
摘要由CSDN通过智能技术生成

摘要:在前文提到的编译器的基础上,设计解释器来解释运行脚本语言。

代码地址:https://github.com/nklofy/Compiler

也可以在我的上传资源中下载

  解释执行是对中间代码的一种执行方式,因为并没有编译成二进制码在CPU直接执行,而是通过解释器模拟执行。优点是容易实现,语义清晰,缺点是效率低、内存占用高。不过对于这个个人作品,我的计划是先用解释器直接解释执行确保正确性以后再找机会实现为更底层的方式。

  前面的编译器把脚本编译为树型中间代码,这个解释器直接遍历语法树来执行。我设计为访问者模式。为什么是访问者模式?这里面有几个考虑。第一是尽量让interpreter对语法树内部保持隔离。语法树属于parser模块,和interpreter模块应该是充分隔离的,互相之间尽量暴露少的接口。第二,访问者模式有利于实现control flow。用额外的control flow flag来控制interpreter的行为,如break、continue、return ,甚至还有函数式编程常见的call with current continuation。

  解释执行时,需要有运行时环境。通常来说,需要有一个上下文环境,保存类型信息、变量表;而针对函数调用,需要栈帧。每次调用函数就创建一个新的栈帧,栈帧包含了一个新的环境,放置局部变量和类型&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值