事先声明:本教程弱化编译理论,侧重实践,如果想详细了解编译原理,务必自己看书!
从UC实习了3个月回学校之后开始准备期末的解释器作业,由于之前一直在实习,没人敢和一个远在广州的人组队,于是我自成一队,完成了cmm解释器的全部工作。
当然,这个解释器更多的是模拟执行,而不是真正意义上的类似Python那种解释器,所以,不要把本文章当做权威性文章,我没完整看过编译原理,包括中间代码的生成我也没找到过一个标准的写法,所以很多东西都有我自己的定义,注意批判性学习。
从一个编译器的角度来看,我这个解释器做的实际上功能不强,也就是说如果想增加函数等的功能,可能需要比较多的思考和代码,但是对于cmm解释器的功能来说是绝对够用了。这之前我只上过一点编译原理,而且上课没听过,期末又跑去实习,根本连书都没看过,全凭借个人理解和边做边看完成的cmm解释器。
理论上几乎是一片空白,但是需要做一个cmm解释器来交作业,如果你也是这种情况,不妨看看我写的这一系列教程,因为我和你的状态是一样的,因为我没有理论基础,很多东西都是后期看书加自己理解,所以更接近一个正常人的思维,而不是老学究。
这一篇只是作为一个引子,或者说开坑说明,那么下一章我们将正式开始cmm解释器的构造,具体标题还没想好,但是保证如果跟着我的节奏,我保证最终你可以做出一个带GUI界面的,可编辑的,带语法高亮的cmm解释器。
除了GUI的部分代码和框架,所有的代码均由我个人完成。
开发语言是java,下面说一下所需的环境:
jdk 1.6或以上(其实这个解释器可以完整移植到Android上去)
开发工具:Eclipse
我个人的配置是windows 7 ultimate 64bit + jdk 1.6 + Eclipse Luna 4.4.1
未完待续。。。