Posts Tagged ‘javascript 编译 预测分析表 自底向上’
自底向上预测分析表的自动生成实现!撒花~~~
星期日, 五月 8th, 2011
自从大二接触到编译原理,就觉得相当有趣。在把自顶向下递归方法学习得差不多并且在DLX项目中写了个汇编连接器后,最近对自底向上的方法又来了劲。不过自底向上的算法虽然和自顶向下一样的好理解,但要实现起来真是不一样的难度。关键就是预测分析表的自动生成,真的好麻烦。神马项集,闭包,前趋,后继。。。。都是看起来理所当然,在代码中具体实现都有很大难度的东西。各种桑不起啊~~~
还好在龙书《编译原理》和南大计院老师的《编译程序构造与实践教程》的强力支撑下,今天总算有了突破性进展,把从文法到分析 表的自动生成实现了,不敢说没有BUG,至少BUG都要要死要活的调试中被搞得差不多了,哈哈哈~~
因为是学习过程中的产品,没有办法演示了,而且这种东西估计演示也木有多少人看,就不炫耀了 ,给个git地址,有兴趣的围观吧:https://github.com/YuhangGe/js-compiler
什么,居然是用的javascript~~对的,javascript最近用的好熟,就懒得换,以至用来学编译原理了~~~所谓语言都是浮云,算法才是王道~~关键是c语言写这种会更麻烦滴~~
下一步准备在这个基础上写个类似于yacc的东西,毕竟分析表这个核心的自动生成实现了剩下的就好说了,不过yacc还是只能拿来膜拜的,不能效仿,没那个本事~~
最近借到本《编译器设计之路》,里面讲了C++实现一个pascal编译器的完整思路和代码,准备仔细拜读,应该会受益匪浅。如果看了后手痒,到可以用js写一个c语言到dlx汇编语言的简化实现,哈哈哈~~如果写出来了,估计以后大一的孩子们就享福啦~~