首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

*怎么自己实现一个编译器?

2012-02-21 
*********!!!!!!!!!!!!!!!!如何自己实现一个编译器?*********!!!!!!!!!!!!!!!!纯粹为了自己学习,想用C或C+

*********!!!!!!!!!!!!!!!!如何自己实现一个编译器?*********!!!!!!!!!!!!!!!!
纯粹为了自己学习,想用C或C++实现一个编译器,并一定要能实现编译器的全部功能,只是为了对编译原理的基础知识练习一下。

不知有没有什么参考资料或书籍?尽量实用的

[解决办法]
看《可变目标C编译器——设计与实现》、龙书,试试
[解决办法]
如果想做个简单的话,建议看看flex和bison,用这两个工具可以很快的做一个编译器前端(后端生成代码比较麻烦,建议自己设计个简单的虚拟机,比如堆栈式虚拟机,生成虚拟机上的代码)
[解决办法]
C++编程艺术 最后一章是一个微型编译器的实现,有完整代码和解析,你可以参考一下.
[解决办法]

探讨

不了解,帮顶

[解决办法]
如果你想做一个c语言的编译器,又是从0开始的话,那你要具备相当的毅力才行。
推荐你看龙书,虽然很多人说这本书理论性很强,但我觉得这本书确实是经典之作,里面也有很多代码的。
而且个人更倾向于理论先行。
《可变目标C编译器——设计与实现》这本书我觉得拿来上手不太好,因为这本书直接分析一个实实在在的编译器, 没有一点理论支撑的话,想吃透其中的内容很困难。

你坚持把龙书的前五章和第八章看完,如果能理解其中的大部分内容的话,就可以写一个小小的toy编译器了。
你这个编译器能把几个简单的c语句翻译成中间代码的形式,中间代码的形式 需要你自己来定义。
能翻译成你自己定义的中间代码就是具有里程碑的一个跨越了,因为翻译成其他的形式,比如汇编,只要一个表示形式的问题了。 能把你自己的语言翻译成汇编,就可以借助汇编器生成机器码。

不过这只是一个toy了,要做一个商业产品,以我目前的功力实在不能帮你了。而且对于大多数的人来说,也没有那个必要。
[解决办法]
如果你重点想做的是前端,那么看龙书
语言最好不要太复杂,建议简化一下pascal或者java

如果你重点想做后端,那么看 advanced compiler design and implementation
目标机器也要尽可能简单,比如mips或者mmix

热点排行