http://www.yinwang.org/blog-cn/2012/08/01/interpreter 怎样写一个解释器
R2语言实现了表达式解释器,支持单变量let绑定、函数调用、函数作为参数传递(对于FP解释器而言这实际上不是问题),讲解了文法作用域与闭包的概念。
缺点:直接利用了Racket语言的match语言,这有点偷懒,不过作者确实也说了不考虑parser的一些琐碎问题,比如优先级、歧义处理什么的。
另外,继承自LISP的
[(? number? x) x]、
[`(,e1 ,e2) ... 什么的,让人看着很不爽。
下面是我真正想说的一些东西:
(1)闭包捕获的是函数定义时的环境,而不是调用时的。解决了函数定义里的自由变量在调用时如何获取的问题。
&#
&#