前言
一直想知道如何编写一门脚本语言,现在终于有机会实现了。非常感谢 Thorsten Ball 的大作:Writing An Interpreter In Go 帮助我实现了这个想法!
Go 是一门非常不错的语言,但是为了锻炼一下自己,使用 C++ 实现了书中的想法,项目地址:https://github.com/ivanallen/autumn。
可能你比较好奇为啥这个项目叫 Autumn,因为刚好这个项目是在国庆节开始的,正好是秋天,就以当时的季节命名了。
C++ 是一门非常灵活的语言,正好趁这个小项目,我可以天马行空的实现我的各种想法,应用到工程里。
特性
- 基于 C++ 17 语法实现。如果可能的话,我希望我能用上 C++ 20. 仅管目前用到的新特性不是很多,但我希望有些地方,能使用新特性来实现。或许你对新特性更加熟悉。
- 完善的注释。抱歉,我撒谎了,后面我一定会补上!
- 完善的 Debug 能力。是的,编写 Pratt Parsing 算法是个挑战,理解它如何工作也是一个挑战。你不可能通过 gdb 一行一行去调试。Autumn 项目希望能在 Debug 能力上帮助你理解 Pratt Parsing. 下面是一张截图。
-
高阶函数的支持
-
闭包支持
是的,你还可以做的更多!