如何设计脚本语言 自制简单的脚本语言
笔者主要做Java安全研究,最近想学编译原理如何设计脚本语言,于是在知乎搜索资源
在知乎看到一本电子书:《两周自制脚本语言》
拿来看了下,顺便自己做了个简单的脚本语言
书的内容挺有趣的,实现了函数,面向对象,一些优化方案,甚至简单的虚拟机
总体来说适合我这样的初学者学习,基本都能看懂如何设计脚本语言,但书中有几处缺点:
(1)语法分析部分太过于粗糙,介绍了基本概念和BNF,然后就用一个Parser库生成了AST,让我一脸懵逼。书中没有深入分析这个Parser库是如何做到的,我打算过阵子做一下深入的研究
(2)书中给AST节点加入eval方法用了类似AOP的库GluonJ卡盟,用作测试还好,拿来用有点不舒服
(3)函数的返回函数是函数体最后一行的执行结果,不支持return,这种方式不妥
(4)词法分析完全基于正则,为什么不用状态机来做呢(虽然最后几章给出了思路,但是不完善)
(5)支持了数组,但没有支持至关重要的map类型
于是我改进了以上的缺点,自己造了个简单的脚本语言
造了个map结构,底层是HashMap
// new map
map = newMap();
// put
putMap(map,"key","value");
// get
data = getMap(map,"key");
print(data);
// clear
clearMap(map);
data = getMap(map,"key");
print(data);
来源:【九爱网址导航www.fuzhukm.com】 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!