不耐烦的总结:我正在寻找有关为公共语言结构生成代码但不解析的良好参考。
我对编程语言很感兴趣,并尝试尽可能多地阅读文献。但是大部分都是从功能和理论的角度来讨论这个话题,我觉得很难理解,更不用说实现这些想法了。
所以问题是;您是否建议使用哪种资源来编写以更加迫切和实用的方式涵盖主题的语言实现?
例如,我发现“ Lua 5.0 的实现”论文非常有启发性。
请注意,我不是在寻找有关解析或标记的文章。
答案 0 :(得分:9)
以下是一堆优秀的教科书:
Java中的现代编译器实现(Tiger book) A.W.阿佩尔 剑桥大学出版社,1998年 国际标准书号0-52158-388-8 关于编译器实现的教科书教程,包括许多语言特性的技术
编译器:原理,技术和工具(龙书) Aho,Lam,Sethi和Ullman Addison-Wesley,2006 国际标准书号0321486811 经典的编译器教科书,虽然它的前端重点反映了它的年龄。
高级编译器设计与实现(鲸书) 史蒂文穆奇尼克 Morgan Kaufman出版社,1997年 ISBN 1-55860-320-4 基本上是优化的食谱;非常完整,适合工业从业者和研究人员。
设计编译器(Ark书) Keith D. Cooper,Linda Torczon 摩根考夫曼出版社,2003年 ISBN 1-55860-698-X 现代课堂教材,更加注重后端和实现技术。
优化现代架构的编译器 兰迪艾伦和肯肯尼迪 Morgan Kaufman出版社,2001年 ISBN 1-55860-286-0 一本现代教科书,专注于优化,包括并行化和内存层次优化。
编程语言语用学 迈克尔斯科特 摩根考夫曼出版社,2005年 ISBN 0126339511
答案 1 :(得分:3)
据说(我读过它,但还没有完成),An Incremental Approach to Compiler Construction非常好。它描述了作者如何教授他的编译器课程。
摘自:
编辑器被认为是神奇的文物,由巫师精心制作,而且只有凡人才能深不可测。关于编译器的书籍被更好地描述为向导说话:由全知的从业者编写并为其编写。现实生活中的编译器过于复杂,无法作为教育工具。现实生活中的编译器和教育玩具编译器之间的差距太大了。对于一个难以理解的障碍,新手编译器作家感到困惑,“更好地写一个翻译。”
本文的目标是打破这一障碍。我们表明构建编译器可以像构建解释器一样简单。我们构造的编译器接受Scheme编程语言的一个大子集,并为Intel-x86架构生成汇编代码,Intel-x86架构是个人计算的主流架构。编译器的开发分为许多小的增量步骤。每一步都会产生一个完全有效的编译器,用于逐步扩展Scheme的子集。每个编译器步骤都会生成可以组装的实际汇编代码,然后由硬件直接执行。我们假设读者熟悉基本的计算机体系结构:其组件和执行模型。不需要详细了解Intel-x86架构。
扩展教程中详细描述了编译器的开发。本教程提供了本教程的支持材料,如自动测试设备和综合测试套件。我们希望Scheme的当前和未来的实现者在本文中找到开发高性能编译器的动机以及实现该目标的手段。
答案 2 :(得分:2)
我建议玩ANTLR。我用了一段时间后发现它很容易使用。
答案 3 :(得分:2)
“Dragon”和“Tiger”书籍(见上文)都很出色,虽然我发现“Tiger”(Appel)书有点密集。我也非常喜欢David Galles的 Modern Compiler Design 。至于帮助您理解的工具和实用程序,我建议您查看以下一项或多项内容:
答案 4 :(得分:1)
我最喜欢的是Robert Morgan的“构建优化编译器”。非常实用,涵盖静态单一任务。
答案 5 :(得分:1)
另一个提示:不要开始挖掘海湾合作委员会;这太复杂了。你想要一些更具研究性和简单性的东西,我建议你研究一下用Java编写的Java编译器或用Erlang编写的Erlang编译器。
答案 6 :(得分:0)
The Design and Evolution of C++,其代码相当少,但主要讨论了设计语言时的权衡和其他问题。
答案 7 :(得分:0)
尝试查看LLVM项目及其出版物和教程。
答案 8 :(得分:0)
我喜欢Nicolas Wirth的Compiler Construction,但也许那是因为学习(Turbo)Pascal是让我决定进入计算机科学的原因。
答案 9 :(得分:-1)
紫龙书是有史以来最好的。