真心求教如何编写一个编译器?
最近学习编写编译器,原先学过编译原理,有点理论基础
现在刚开始,不知道如何下手请,
如何做一个小例子先?
[解决办法]
看 lex&yacc 的例子 ...
[解决办法]
先写词法分析器,可以使用spirit很方便的
然后的工作就不怎么难了
[解决办法]
1.先做一个pl0编译器,不一定语法上要完全照着pl0的语法,只是实现一个功能上差不多的编译器,pl0只有整形,函数没有变量形参.不一定要编译成可执行文件,自己定义一种中间语言,
再作一个解释器,设计加实现估计不会要两个星期
2.然后作进行功能扩充,作一个C语言编译器,不一定要编译成可执行文件,不过中间语言肯定也要
进行扩充.先不作优化,出错处理先简单作一作,这个不知道两个月做不做的出来
3.再做一个编译器后端,将中间语言编译成汇编语言,考虑一下简单的优化.
[解决办法]
技术型的活在于语义处理,也就是表达式处理,和成中间代码
[解决办法]
词法分析,语法分析器
[解决办法]
编译器是程序设计的颠峰, 希望你成功吧
[解决办法]
不太容易
[解决办法]
简单的可以实现,但做到实用化的程度不是一朝一夕可以搞定的。
别以为看了编译原理就能做编译器了,那看了操作系统原理就能写操作系统了?
还是要先从最基本的应用程序学起
[解决办法]
去看一看真正的编译器是怎么做的吧。
编译器是个很复杂的冬冬:
比如open64: http://www.open64.net/
suif: http://suif.stanford.edu/suif/suif2/index.html
[解决办法]
希望你会感兴趣,呵呵
《Let 's Build a Compiler》 by Jack Crenshaw
http://compilers.iecc.com/crenshaw/
[解决办法]
学习一下scheme是很有帮助的!!!
呵呵!!!
[解决办法]
楼主好人
[解决办法]
> > 我是楼主,我希望游人能够给我一点点上手的帮助
> > 比如一个很简单的例子之内的
> > 或者告诉我什么地方有简单的例子的书?
我说过了,这是一门很复杂的技术。如果你不肯从头到尾仔细修习一本书,那你是不可能有所作为的。给你一个简单的例子没有任何作用,不要高估自己的天份。花两个月的时间,好好找本书学。至于什么书,去网上搜一下就知道了。
> > 编绎原理》是一本很桔躁的书吧?我根本看不进去呀!不知道它和实践有啥关系
你光看书不写代码,自然就和实践没有关系。当你能自己写出一款简单的编译器时就知道好处了。编译是密度最高的一门技术,如果你之前学过程序设计和算法,那等你修完编译原理的时候就算功德圆满了。
[解决办法]
有现在不少工具的帮助下, 现在写个简单的编译器/解释器基本上就个简单的体力活了,编译优化除外...
几年前当俺啥也不懂的时候,用递归降解写个简单的解释器差不多花了偶3个月时间,后来用工具做个功能强大不少的基本上3天就差不多了, 唉... 很无趣的说...
[解决办法]
有现在不少工具的帮助下, 现在写个简单的编译器/解释器基本上就个简单的体力活了,编译优化除外...
几年前当俺啥也不懂的时候,用递归降解写个简单的解释器差不多花了偶3个月时间,后来用工具做个功能强大不少的基本上3天就差不多了, 唉... 很无趣的说...
用工具和自己写是两码事,网上下载个工具就能当黑客了?