新書推薦:
《
传统文化有意思:古代发明了不起
》
售價:NT$
199.0
《
亚述:世界历史上第一个帝国的兴衰
》
售價:NT$
490.0
《
人工智能与大数据:采煤机智能制造
》
售價:NT$
440.0
《
新民说·逝去的盛景:宋朝商业文明的兴盛与落幕(上下册)
》
售價:NT$
790.0
《
我从何来:自我的心理学探问
》
售價:NT$
545.0
《
失败:1891—1900 清王朝的变革、战争与排外
》
售價:NT$
390.0
《
万千心理·我的精神分析之道:复杂的俄狄浦斯及其他议题
》
售價:NT$
475.0
《
荷马:伊利亚特(英文)-西方人文经典影印21
》
售價:NT$
490.0
|
內容簡介: |
本书讨论了编译原理的基础理论与实现技术,并在其前几版的基础上进行了修订与更新。本书共13章,内容包括编译概述、形式语言与自动机理论基础、词法分析、语法分析、语义分析及中间代码生成、代码优化、目标代码的生成、符号表和出错处理、面向对象语言的编译、并行编译技术、软件构造等。在内容的组织上,本书将编译的基本理论和具体的实现技术有机地结合起来,清楚地阐述相关的概念和原理,并给出部分C语言实现程序;同时,对编译程序自动生成工具的功能和使用方法做了详细的介绍。本书提供免费电子课件。
|
關於作者: |
冯秀芳,太原理工大学软件学院副院长、教授,主要研究领域为人工智能与图像处理,曾获批国家精品课程一门,获批省教学成果二等奖一项,参与出版教材六部。一直从事计算机专业和软件工程专业的本科课程的讲授工作,具有二十多年“编译原理”课程的教学经验。
|
目錄:
|
目 录 第1章 概述1 1.1 程序设计语言与翻译1 1.1.1 程序设计语言1 1.1.2 编译程序和解释程序2 1.2 编译过程概述3 1.2.1 编译程序的工作过程3 1.2.2 编译程序的结构7 1.3 编译程序的开发7 1.3.1 编译程序的开发步骤8 1.3.2 编译程序的开发技术8 1.3.3 编译程序的自动生成10 1.4 本章小结10 习题111 第2章 形式语言理论基础12 2.1 形式语言的基本概念12 2.1.1 符号和符号串12 2.1.2 符号串的运算13 2.1.3 符号串集合的运算15 2.2 文法和语言的形式定义16 2.2.1 文法的形式定义16 2.2.2 形式语言的定义19 2.3 语法树和二义性22 2.3.1 语法树和推导22 2.3.2 文法的二义性25 2.4 文法的限制28 2.4.1 文法的实用限制28 2.4.2 文法的等价变换31 2.4.3 扩充的BNF表示法33 2.5 文法和语言的Chomsky分类34 2.5.1 0型文法与0型语言(对应图灵机)34 2.5.2 1型文法与1型语言(对应线性界限自动机)35 2.5.3 2型文法与2型语言(对应下推自动机)35 2.5.4 3型文法与3型语言(对应有限自动机)36 2.5.5 四类文法的关系和区别37 2.6 本章小结38 习题238 第3章 自动机理论基础40 3.1 有限自动机的基本概念40 3.1.1 有限自动机的定义及表示法40 3.1.2 有限自动机的机器模型43 3.1.3 确定有限自动机(DFA)43 3.1.4 有限自动机在计算机内的表示44 3.1.5 不确定有限自动机(NFA)45 3.1.6 由NFA到DFA的等价转换47 3.2 确定有限自动机DFA的化简50 3.2.1 等价状态和无关状态50 3.2.2 自动机的化简51 3.3 正则表达式形式定义53 3.4 下推自动机PDA54 3.4.1 下推自动机的机器模型54 3.4.2 PDA的形式定义55 3.5 本章小结57 习题357 第4章 词法分析59 4.1 词法分析概述59 4.1.1 词法分析的功能59 4.1.2 词法分析的两种处理结构59 4.1.3 单词符号的种类60 4.1.4 词法分析程序的输出形式60 4.2 词法分析程序61 4.2.1 词法分析程序的设计与实现61 4.2.2 单词的识别61 4.2.3 无符号数的识别65 4.2.4 标识符的识别66 4.3 词法分析程序的自动生成68 4.3.1 基本思想68 4.3.2 Lex源程序结构69 4.3.3 Lex编译程序工作过程71 4.3.4 Lex的实现71 4.3.5 Lex的使用方式72 4.4 本章小结72 习题473 第5章 语法分析——自顶向下分析方法74 5.1 自顶向下语法分析技术74 5.1.1 自顶向下语法分析思想75 5.1.2 三种终结符号集76 5.1.3 自顶向下语法分析难点78 5.1.4 确定的自顶向下语法分析思想80 5.2 LL(K)语法分析方法80 5.2.1 LL(1)语法分析思想80 5.2.2 LL(1)语法分析方法的逻辑结构81 5.2.3 LL(1)语法分析方法81 5.3 递归下降语法分析方法88 5.3.1 递归下降语法分析方法的实现思想88 5.3.2 递归子程序及其性质89 5.3.3 递归下降语法分析方法处理示例90 5.4 本章小结95 习题595 第6章 语法分析——自底向上分析方法97 6.1 自底向上语法分析技术97 6.1.1 自底向上语法分析思想97 6.1.2 自底向上分析难点99 6.2 自底向上优先分析方法99 6.2.1 简单优先分析方法100 6.2.2 算符优先分析方法102 6.3 LR(K)分析方法112 6.3.1 LR分析思想及逻辑结构113 6.3.2 LR(0)分析方法116 6.3.3 SLR(1)分析方法124 6.3.4 LR(1)分析方法127 6.3.5 LALR(1)分析方法131 6.4 本章小结136 习题6136 第7章 语义分析及中间代码生成138 7.1 语义分析概述138 7.1.1 语义分析的概念138 7.1.2 属性文法技术140 7.2 中间语言代码142 7.2.1 抽象语法树142 7.2.2 逆波兰表示144 7.2.3 四元式147 7.2.4 三元式150 7.3 语法制导翻译154 7.3.1 表达式的翻译154 7.3.2 说明语句的翻译158 7.3.3 赋值语句的翻译161 7.3.4 控制语句的翻译161 7.4 本章小结164 习题7165 第8章 代码优化167 8.1 代码优化概述167 8.1.1 代码优化的定义167 8.1.2 代码优化的分类167 8.1.3 优化技术简介168 8.2 局部优化171 8.2.1 基本块的划分171 8.2.2 基本块的DAG表示173 8.2.3 基本块优化的实现176 8.3 循环优化177 8.3.1 循环的查找177 8.3.2 循环优化的实现178 8.4 本章小结182 习题8182 第9章 目标代码的生成184 9.1 目标代码生成概述184 9.1.1 目标代码185 9.1.2 寄存器分配185 9.2 一个计算机模型——虚拟机186 9.2.1 虚拟机186 9.2.2 虚拟机的汇编指令187 9.3 从中间代码生成目标代码189 9.3.1 从逆波兰表示生成目标代码189 9.3.2 从四元式序列生成目标代码192 9.4 目标程序运行时的存储管理192 9.4.1 程序运行时的存储组织193 9.4.2 静态存储分配194 9.4.3 栈式动态存储分配195 9.4.4 堆式动态存储分配198 9.5 本章小结200 习题9201 第10章 符号表和出错处理202 10.1 符号表的结构与存放202 10.1.1 符号表的组织与内容202 10.1.2 线性符号表204 10.1.3 有序符号表204 10.1.4 散列符号表205 10.1.5 栈式符号表206 10.2 符号表的管理208 10.2.1 符号表的建立208 10.2.2 符号表的查填209 10.3 程序的错误210 10.3.1 错误存在的必然性210 10.3.2 错误的种类211 10.3.3 错误复原212 10.4 出错处理213 10.4.1 词法错误的处理213 10.4.2 语法错误的处理214 10.4.3 语义错误的处理216 10.5 本章小结218 习题10218 第11章 面向对象语言的编译220 11.1 概述220 11.1.1 面向对象语言的基本特征220 11.1.2 类和成员的属性构造222 11.1.3 面向对象编译程序的特点225 11.2 面向对象语言的语法结构226 11.2.1 单一继承226 11.2.2 多重继承228 11.2.3 多态性229 11.2.4 动态绑定230 11.2.5 接口类型230 11.3 面向对象的动态存储分配231 11.3.1 对象的存储区管理方式231 11.3.2 静态模型和栈式模型废弃单元的回收231 11.3.3 堆式模型废弃单元的回收232 11.4 本章小结234 习题11234 第12章 并行编译技术235 12.1 并行计算机及其编译系统简介235 12.1.1 并行计算相关技术简介236 12.1.2 并行编译系统的分类及结构239 12.2 并行程序设计模型242 12.2.1 并行体系结构分类及并行程序设计242 12.2.2 并行程序设计模型244 12.3 并行编译系统的构造245 12.3.1 并行编译系统的构造简介245 12.3.2 程序分析247 12.3.3 程序优化251 12.3.4 并行代码生成252 12.4 自动并行化技术研究现状255 12.4.1 比较典型的自动并行化系统简介256 12.4.2 自动并行化编译系统发展简介257 12.5 本章小结259 习题12260 第13章 软件构造261 13.1 软件构造技术261 13.1.1 API的设计和构造261 13.1.2 基于状态和表驱动的构造技术263 13.1.3 基于复用的构造技术265 13.2 模块化软件构造269 13.2.1 模块化设计理论269 13.2.2 数据结构与算法271 13.2.3 软件测试与软件调试273 13.3 面向对象的软件构造技术276 13.3.1 抽象与封装277 13.3.2 面向对象的设计278 13.3.3 测试与调试的基本技术284 13.4 本章小结286 习题13286 附录A 编译程序自动生成工具287 思考题306 参考文献307
|
|