阅读王垠《怎样写一个解释器》一文后的一些体会

本文分享了阅读王垠关于如何编写解释器的文章后的体会,重点探讨了作用域、闭包和Racket编程语言的概念及其在解释器实现中的应用。
摘要由CSDN通过智能技术生成

http://www.yinwang.org/blog-cn/2012/08/01/interpreter 怎样写一个解释器

R2语言实现了表达式解释器,支持单变量let绑定、函数调用、函数作为参数传递(对于FP解释器而言这实际上不是问题),讲解了文法作用域与闭包的概念。

缺点:直接利用了Racket语言的match语言,这有点偷懒,不过作者确实也说了不考虑parser的一些琐碎问题,比如优先级、歧义处理什么的。

另外,继承自LISP的 [(? number? x) x][`(,e1 ,e2) ... 什么的,让人看着很不爽。

下面是我真正想说的一些东西:

 
(1)闭包捕获的是函数定义时的环境,而不是调用时的。解决了函数定义里的自由变量在调用时如何获取的问题。

&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值