编译原理 技术与工具

Alfred V. Aho

出版时间

2008-01-31

ISBN

9787115172655

评分

★★★★★

标签

计算机

书籍介绍
这本书在读者口中反复被提及的,不是它涵盖了多少编译技术的细节,而是它把“造一个编译器”这件事本身当成了一条贯穿全书的实践主线——从第二章那个缩微翻译器起步,一路走到代码生成与优化,让你看着一个分析器如何从概念长成形体。也正因如此,评价两极分明:有人读来“丝般顺滑”,难点处总有例子托底;也有人卡在第二章、最终在优化部分“弃疗”。它最富争议之处,在于把词法、语法、语义分析这些经典内容奉为核心,而现代编译器工程里它们未必是最关键的环节。它真正适合的人,是愿意花时间去亲手构造、并想理解编译器内部如何运作的人;若只为掌握当代工程实践,或许另有所选。
AI导读
核心看点
  • 编译原理领域权威教材,系统讲解词法到优化全流程
  • 涵盖语法分析、中间代码生成、运行时环境等核心章节
  • 强调数学抽象基础,深入探讨编译器设计与实现原理
读者共识
  • 公认的经典教材,理论深度与广度无可替代
  • 内容抽象且枯燥,阅读门槛高,需极强耐心
  • 适合系统学习原理,但不适合作为实战开发手册
精彩摘录
  • "在C++中,一个类的定义可能和它的部分或全部方法的定义分离。因此对于一个和类C相关联的名字x,可能存在一个在它作用域之外的代码区域,然后又跟着一个在它作用域内的代码区域(一个方法定义)。实际上,在这个作用域之内和之外的代码区域可能相互交替,直到所有的方法都被定义完毕。"
  • "In C++, a class definition may be separated from the definitions of some or all of its methods. Therefore, a name x associated with the class C may have a region of the code that is outside its scope, followed by another region (a method definition) that is within its scope. In fact, regions inside "
  • "标识符 a 是一个代表了表达式 (x + 1) 的宏。但 x 到底是什么呢?我们不能够静态地解释 x 。"
  • "Compiler design is full of beautiful examples where complicated real-world problems are solved by abstracting the essence of the problem mathematically. The study of compilers is mainly a study of how we design the right mathematical models and chose the right algorithms, while balacing the eed for "
  • "我们的目标是:以构造出来的分析树所产生的字符串与输入字符串匹配的方法构造分析树的其余部分。"
  • "The object is to construct the remainder of the parse tree in such a way that the string generated by the parse tree matches the input string."
  • "发现错误即停止运行的编译器不是一个好的编译器"
  • "The use of a rigorous mathematical foundation allows us to show that an optimization is correct and that it produces the desirable effect for all possible inputs."
目录
1 Introduction 1
2 A Simple Syntax-Directed Translator 39
3 Lexical Analysis 109
4 Syntax Analysis 191
5 Syntax-Directed Translation 30 3

显示全部
用户评论
这本书重点讲的是Parser,而Parser在现代编译器技术中,处于最次要的地位!有些所谓的经典,真的是人云亦云。。。建议去看《编程语言实现模式》、《两周自制脚本语言》和《自制编程语言》
读一半烂尾了,以后再读
买了这本书,看了几页看不下去了。我希望这辈子能把这本书看完,还是比较有意思的。。停止
读了前面部分,后面的希望过年前能看完吧~~
革命尚未成功,同志尚须努力。 2013-2-21
编译器“课程”教材。用java假装写了C的编译器。优化最终弃疗,太费时间了。花了不少时间写编译器报告,总结得失。细想之还是写函数式语言的编译器更佳。俱往矣,笑言耳。
难度没有传说那么高,静心看的话,可以算是科普文章了。一如既往的丝般顺滑。偶尔发现难懂的地方往往马上就能看到有例子解释,所以还是挺流畅的。第十二章讲得好混乱。
A traditional compiler wikipedia.
下载
收藏