*********!!!!!!!!!!!!!!!!如何自己实现一个编译器?*********!!!!!!!!!!!!!!!!

mulintaomulintao 2010-04-14 01:01:00
纯粹为了自己学习,想用C或C++实现一个编译器,并一定要能实现编译器的全部功能,只是为了对编译原理的基础知识练习一下。

不知有没有什么参考资料或书籍?尽量实用的
...全文
415 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vo_Go 2012-03-08
  • 打赏
  • 举报
回复
可变目标C编译器——设计与实现
Vo_Go 2012-03-08
  • 打赏
  • 举报
回复
正在写。。大概写了一半吧,思路已经完全清晰了。

书中的方法是不断修饰ast树,ast树效率我觉得不够高。我用堆栈实现。
lxy15329 2011-12-27
  • 打赏
  • 举报
回复
悲催的我,选的毕业设计题目竟然是C语言编译器的实现,这不是不想毕业吗?
帖子不能编辑 2010-04-17
  • 打赏
  • 举报
回复
如果你想做一个c语言的编译器,又是从0开始的话,那你要具备相当的毅力才行。
推荐你看龙书,虽然很多人说这本书理论性很强,但我觉得这本书确实是经典之作,里面也有很多代码的。
而且个人更倾向于理论先行。
《可变目标C编译器——设计与实现》这本书我觉得拿来上手不太好,因为这本书直接分析一个实实在在的编译器, 没有一点理论支撑的话,想吃透其中的内容很困难。

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

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

如果你重点想做后端,那么看 advanced compiler design and implementation
目标机器也要尽可能简单,比如mips或者mmix
leonardWang 2010-04-17
  • 打赏
  • 举报
回复
光词法 语法就很麻烦了
CCCCCCCCCCCCCCC 2010-04-15
  • 打赏
  • 举报
回复
粗糙的实现部分功能是可以的,有些学校就有这方面的课程设计

全部实现,哈哈,不要做梦了
acdbxzyw 2010-04-15
  • 打赏
  • 举报
回复
楼主写出来就前途无量了。。。
fairywell 2010-04-15
  • 打赏
  • 举报
回复
直接动手把,先做半年,就知道需要什么了
cattycat 2010-04-15
  • 打赏
  • 举报
回复
yacc或lex等都有代码,研究一下理论,然后参考代码可以写一个
cattycat 2010-04-15
  • 打赏
  • 举报
回复
yacc或lex等都有代码,研究一下理论,然后参考代码可以写一个
mulintaomulintao 2010-04-15
  • 打赏
  • 举报
回复
呵呵,各位XD,当然不是全部实现了,也没有那么多的精力,只是根据自己的学习粗略的照本宣科的搞一个玩的东东,各位再推荐一把啊
jakiejiajia 2010-04-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xiuxianshen 的回复:]

不了解,帮顶
[/Quote]
要细看,龙书 相当的经典,额正在看中
sosidami 2010-04-14
  • 打赏
  • 举报
回复
实现编译器的全部功能!楼主别做梦了。。。。。能做出这个人,绝对不是对编译器基础知识练习一下。。。。照你这么说,中科院编译组的人都干嘛去了!!

实现一部分《编译器构造C语言描述》或许会帮你
jeromeyu 2010-04-14
  • 打赏
  • 举报
回复
C++编程艺术 最后一章是一个微型编译器的实现,有完整代码和解析,你可以参考一下.
fairywell 2010-04-14
  • 打赏
  • 举报
回复
我已经告诉你一个很好的资料了,在1楼,您看看,那本书就是作者写 lcc 的总结
mulintaomulintao 2010-04-14
  • 打赏
  • 举报
回复
有没有相关的参考资料或是实例作为参考?

要是凭空自己开始写,呵呵,估计又会胎死腹中哦

GCCFeli 2010-04-14
  • 打赏
  • 举报
回复
如果想做个简单的话,建议看看flex和bison,用这两个工具可以很快的做一个编译器前端(后端生成代码比较麻烦,建议自己设计个简单的虚拟机,比如堆栈式虚拟机,生成虚拟机上的代码)
田暗星 2010-04-14
  • 打赏
  • 举报
回复
支持楼主
mulintaomulintao 2010-04-14
  • 打赏
  • 举报
回复
《龙书》看了一遍,太理论化了,而且用的也不是常用的C/C++或其他常用的语言。
本人只想用一些常用的语言实现一个具有基本功能的编译器

请各位大侠不吝赐教
加载更多回复(2)

33,010

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧