这个问题已经在这里有一个答案:
- 学习上的解析器,翻译和编译器资源[关闭] 12个答案
摘要不耐烦:我在寻找上产生共同的语言结构的代码,但不能解析很好的参考。
我感兴趣的编程语言,并试图尽可能多地阅读文献。 但他们大多覆盖的功能和理论观点的话题,我觉得他们很难理解更不用说实现的想法。
所以,问题是; 你建议对编程语言实现,包括在一个更紧迫的和实用的时尚话题是哪些资源?
例如,我发现纸非常有启发性“ 的Lua中5.0的实现 ”。
需要注意的是,我不是要求有关分析或符号化的文章。
这个问题已经在这里有一个答案:
摘要不耐烦:我在寻找上产生共同的语言结构的代码,但不能解析很好的参考。
我感兴趣的编程语言,并试图尽可能多地阅读文献。 但他们大多覆盖的功能和理论观点的话题,我觉得他们很难理解更不用说实现的想法。
所以,问题是; 你建议对编程语言实现,包括在一个更紧迫的和实用的时尚话题是哪些资源?
例如,我发现纸非常有启发性“ 的Lua中5.0的实现 ”。
需要注意的是,我不是要求有关分析或符号化的文章。
这里有一帮很好的教科书:
在Java中(虎书)AW阿佩尔剑桥大学出版社,1998年ISBN 0-52158-388-8对编译器实现的教科书教程,其中包括多语言功能,技术现代编译器实现
编译原理,技术和工具(龙书)阿霍,林,塞西和乌尔曼Addison-Wesley出版社,2006年ISBN 0321486811经典的编译器教科书,虽然它的前端着重体现它的年龄。
高级编译器设计与实现(鲸书)史蒂芬Muchnick摩根考夫曼出版社,1997年ISBN 1-55860-320-4本质上优化的食谱; 非常完整,适用于工业实践者和研究者。
工程编译器(方舟书)基思D.库珀,琳达Torczon摩根考夫曼出版社,2003书号1-55860-698-XA现代课堂教材,以更加强调后端和实现技术。
优化编译器为现代建筑兰迪·艾伦和Ken肯尼迪摩根考夫曼出版社,2001 ISBN 1-55860-286-0现代教科书,重点优化,包括并行处理和存储层次优化。
编程语言语用学迈克尔·L·斯科特摩根考夫曼出版社,2005书号0126339511
据说(我读通过它,但还没有做的话), 以渐进的方式编译器建设是极好的。 它描述了作者是如何教导他的编译过程。
从抽象:
编译器被认为是神奇的文物,由向导精心打造,由凡人深不可测。 在编译器书籍更好地描述为向导的谈话:通过和无所不知从业人员集团书面。 现实生活中的编译器过于复杂,作为一种教育工具。 而现实生活中的编译器和教育玩具编译器之间的差距过大。 新手编译作家看台不解面临的一个难以逾越的障碍,“更好地编写一个解释吧。”
本文的目标是打破这一障碍。 我们发现,建立一个编译器可以为建设一个解释器一样简单。 我们构建的编译器接受Scheme编程语言的一个大子,产生的汇编代码Intel的x86架构,个人计算的主流架构。 编译器的开发被分成许多小的渐进步骤。 每一步都得到了计划的渐进膨胀子集的完全工作编译器。 每个编译步骤产生实际的汇编代码,能够被组装,然后直接由硬件执行。 我们假设读者熟悉基本的计算机体系结构:它的组成部分和执行模型。 不需要英特尔x86架构的详细知识。
编译器的开发进行了详细的扩展教程中描述。 支撑为教程材料,例如加上一个全面的测试套件的自动测试设备设置有教程。 这是我们的希望,计划的当前和未来的实施者本文找到开发高性能编译器和实现这一目标的手段的动机。
我建议用打ANTLR 。 我用它一段时间回来,发现它非常容易使用。
“龙”和“虎”的书(见上文)都是很好的,但我觉得“老虎”(阿佩尔)的书有点密集。 我也很喜欢大卫嘉莱士现代编译器的设计 。 至于工具和实用程序来帮助你理解,我建议考虑看看在一个或多个以下内容:
我最喜欢的是由罗伯特·摩根“建立优化编译器”。 非常实用,涵盖静态分配一次。
另一个提示:不要开始挖掘到GCC; 这是太复杂了。 你想要的东西更researchy和简单的开始,我会建议寻找到像用Java或写在二郎山二郎山编译器Java编译器。
设计和C演化++由Bjarne Stroustrup的,其中有相当少的代码,但主要讨论了权衡和设计语言的其他问题。
尝试一下LLVM项目和他们的出版物和教程。
我喜欢编译器构造由Nicolas Wirth,但也许是因为学习(涡轮)帕斯卡尔是什么让我决定进入计算机科学。
http://www-old.oberon.ethz.ch/WirthPubl/CBEAll.pdf
紫色龙书是有史以来最好的。