





定价:59元
印次:1-1
ISBN:9787302281047
出版日期:2012.05.01
印刷日期:2012.05.04
图书责编:龙启铭
图书分类:教材
编译原理与编译器构造方法是计算机科学技术专业本科生的必修课程。一本优秀的编译教材会让学习计算机的大学生受益终生。 本书就是这样一本非常优秀、并且有鲜明特色的编译教材。本书的前身是1988年出版的同名经典教材《编译器构造》以及1991年出版的《编译器构造:C语言描述》和《编译器构造:Ada语言描述》。本书的之前3个版本均在美国许多大学被当做本科生教材而广泛使用。本书的几位原作者在三所美国大学拥有长达25年的编译器教学经验,根据他们的经验在本书中对编译器构造的基本知识与关键技术进行了全新的讲解。 在此前版本的基础之上,本书结合最新的程序语言和编译技术的发展,不仅引入了目前流行的Java语言作为编译器的分析对象,同时更创新性地采用了面向对象的设计模式来组织编译器中的数据结构,特别是对包括抽象语法树在内的各种不同中间表示形式的存储与访问都采用了visitor(访问者)设计模式来实现。设计模式的采用可以在很大程度上降低编译器构造的复杂程度,使初学编译器的读者能更加容易地上手实现自己的编译器。 本书的主要内容包括编译器历史和概述、词法分析(扫描)、语法分析(包括自顶向下和自底向上的分析)、语法制导翻译、符号表和声明处理、语义分析、中间表示形式、虚拟机上的代码生成、运行时支持、目标代码生成和程序优化等。与其他的编译器教材相比,本书具有如下主要特点: * 本书全面使用了伪码的风格来描述算法,这种伪码方式不仅可以简洁地对算法进行描述,同时也支持更加清晰地对算法的目的和结构进行讨论。 * 在内容方面,本书不仅精简掉了一些过时的内容(比如属性文法),同时对于在实践中常用的技术(比如抽象语法树的构造和使用)提供了更加详尽的讲解。 * 本书在算法中使用了面向对象的设计模式,并且在算法的讲解中引入了现代软件实践中的常用方式。 * 在代码生成技术中,本书不仅讲解了传统的为目标机器生成代码的技术,同时还引入了为虚拟机生成目标代码的方法,给教师和读者提供了不同的选择。 本书提供了详尽清晰的算法,鼓励读者在实践中学习编译器构造的相关技术,同时提供了配合教材使用的教学网站、参考资料以及源代码下载。本书不仅可以作为计算机专业本科生或研究生的参考教材,同时也适合相关领域的软件工程师、系统分析师等作为参考资料。
自Fischer和LeBlanc合著的《编译器构造》(Crafting a Compiler)一书于1988年出版以来,这个世界已经发生了巨大的变化。虽然有些老师可能还会记得,该课本所附软件使用的5.25寸软盘,而今的大多数学生则可能根本没见过或者没有接触过这样的磁盘。学生们在课堂上和实践中所遇到的编程语言也发生了巨大的变化。在1991年的时候,该教材划分出了两个版本,分别使用了C和Ada两种语言来描述其中的算法。虽然C依然是一种很流行的语言,但是Ada并没有达到预期的广泛应用,已经逐渐淡出了人们的视线。从C语言派生出添加了面向对象特性的C++语言。Java则是一种更为简单的面向对象语言,由于其安全性以及可以在Web浏览器中运行而得以广泛流行。美国大学预修课程(College Board Advanced Placement)中使用的编程语言已经从Pascal转为C++,现在又转向了Java。 虽然大环境发生了很大的变化,但是众多学生和教师还是在继续学习和讲授编译器构造的相关课程。在编译器和程序设计语言翻译领域的研究工作也依然在持续增长,这是由于为了适应日益增加的体系结构和编程语言的种类,编译器被赋予了更加重要的使命。软件开发环境通用要依赖编译器来同各种不同的工具链构件进行交互,其中包括语法指示的编辑器、性能刻画工具(profiler)和调试器等。所有现代软件项目都要依赖于编译器对程序中的错误进行严格检查,并且做到对程序进行如实的翻译。 有些教材随着时间会做一些较小的改动,例如添加一些新的练习或者示例。与1988年和1991年的版本相比,本书则进行了非常显著的修订。虽然本教...
1.1 编译的历史 1
1.2 编译器可以做什么 3
1.2.1 编译器生成的机器代码 3
1.2.2 目标代码格式 5
1.3 解释器 6
1.4 语法和语义 7
1.4.1 静态语义 8
1.4.2 运行时语义 8
1.5 编译器的组织结构 10
1.5.1 扫描器 11
1.5.2 分析器 12
1.5.3 类型检查器(语义分析) 12
1.5.4 翻译器(程序综合) 12
1.5.5 符号表 13
1.5.6 优化器 13
1.5.7 代码生成器 13
1.5.8 编译器开发工具 14
1.6 程序设计语言和编译器设计 14
1.7 计算机体系结构和编译器设计 15
1.8 编译器设计的考虑事项 16
1.8.1 调试(开发)编译器 16
1.8.2 优化编译器 17
1.8.3 可重定向编译器 17
1.9 集成开发环境 18
练习 18
第2章 一个简单的编译器 21
2.1 ac语言的非形式化定义 21
2.2 ac语言的形式化定义 22
2.2.1 语法规范 22
2.2.2 词法单元规范 24
2.3 一个简单编译器中的阶段 25
2.4 扫描 25
2.5 分析 27
2.5.1 分析过程的预测 27
2.5.2 产生式的实现 28
2.6 抽象语法树 29
2.7 语义分析 31
2.7.1 符号表 31
2.7.2 类型检查 32
2.8 代码生成 34
练习 36
第3... 查看详情
同系列产品
查看详情-
图像处理、分析与机器视觉(第4版)
Milan Sonka,Vaclav Hlavac,Roger Boyle 著 兴军亮 艾海舟 等译
ISBN:9787302426851
定 价:99元
-
计算机体系结构
Gerard Blanchet, Bertrand Dupouy 著 陈宗斌 等译
ISBN:9787302460640
定 价:39元
-
操作系统原理与应用(第4版)
Michael Palmer, Michael Walters 著 陈宗斌 等译
ISBN:9787302458913
定 价:98元
-
软件架构与模式
Joachim Goll 著 贾山 等译
ISBN:9787302450993
定 价:49元