手动构造固定平台下语义编译器(LL(1)文法)

好久之前的项目了,今天整理出来和猿们分享下。当时上编译原理课时候的结题项目,当时大家都是用flex+bison构造的,当时感觉没什么意思,和老师沟通之后发现自己写个小的编译器还是蛮好的,挺有意思,不过老师也说如果不能完全实现也可以给合理的分数,就想着干就干个大的,实现不了再说,然而当时光是设计语法结构+构建first集+构建follow集+构建select集+消除二义性就花费了大概三四天甚至更长的时间,倒是最后实现起来词法分析,语法分析,制导翻译的时候,因为之前有点数据结构的功底,用STL很快就实现,还算没让自己和老师失望,最后犯了点强迫症写了一些关于语义的出来了,也就是制导翻译的时候的一些警告呀,强制类型转换等一些处理,记得当时老师还惊讶的说,这是你在自己做的吗,这工作量很大啊,然后我自信的点点头,说了句当然了,然后...相当爽了就吐舌头生气,写的我现在都有点激动了。。。

这个一个画图的软件,所以设计的语法可能有点抽象,我做的工作就相当于把我设计的高级语言编译成类似于汇编一样的,这个画图平台所能识别的语言。这里我再GitHub上给出这个小工具了。。。

依旧是贴在GitHub上(https://github.com/zsweet/compiler-with-LL1-grammer

原文地址:https://www.cnblogs.com/zswbky/p/8454128.html