-
内容大纲
本书全面介绍编译器的设计与实现。本书共13章,分为3个模块,以编译器的基础知识作为起点,深入探讨词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等核心主题。本书还涵盖了编译器技术的应用、文法和语言的理论基础、编译器的构造技术、运行时存储空间的组织和管理、源程序的中间形式以及错误处理技术等内容。通过本书,读者不仅能够掌握编译器的工作流程,理解不同编程语言的编译原理,还能深入了解编译技术在高级语言实现、计算机体系结构优化、程序翻译等领域的应用,能够应用所学知识构建简单的编译器。书中包含大量示例和习题,以帮助读者加深理解和提升实践操作能力。
本书适合作为高等学校计算机科学与技术、软件工程等专业的教材,同时可供编译器研究者和开发者参考。 -
作者介绍
-
目录
模块1 引论和基本概念
第1章 引论
1.1 编译器技术的应用
1.1.1 高级语言的实现
1.1.2 针对计算机体系结构的优化
1.1.3 新计算机体系结构的设计
1.1.4 程序翻译
1.1.5 编译器相关的建模及科学
1.1.6 程序设计语言的部分特性
1.1.7 提高软件开发效率的工具
1.2 编译器概述
1.2.1 词法分析
1.2.2 语法分析
1.2.3 语义分析
1.2.4 中间代码生成
1.2.5 代码优化
1.2.6 代码生成
1.2.7 符号表管理
1.2.8 阶段的分组
1.2.9 解释器
1.2.10 编译器的生成与构造
小结
习题1
拓展阅读:深度学习编译器
第2章 文法和语言
2.1 预备知识
2.1.1 字母表
2.1.2 符号串
2.2 文法的非形式讨论
2.3 文法和语言的形式定义
2.4 语法树与二义性文法
2.4.1 语法树的概念
2.4.2 二义性与最左(最右)推导
2.4.3 子树与短语、句柄
2.4.4 抽象语法树
2.5 句子的分析
2.6 有关文法的实用限制
2.7 文法的其他表示法:EBNF和语法图
2.8 文法和语言的分类
2.9 文法构造与文法化简
2.9.1 由语言构造文法的例子
2.9.2 文法的化简
2.9.3 构造无:产生式的上下文无关文法
小结
习题2
拓展阅读:非乔姆斯基的两种语法与Chart分析算法
模块2 编译器的构造技术
第3章 词法分析概述及词法分析器的人工实现
3.1 词法单元及属性
3.1.1 词法单元、模式、词素
3.1.2 词法单元的属性
3.1.3 词法错误
3.2 输入缓冲
3.2.1 缓冲区对
3.2.2 哨兵标记
3.3 词法单元的描述与识别
3.3.1 串和语言
3.3.2 正则表达式
3.3.3 正则定义
3.3.4 正则文法和正则式的等价性
3.3.5 状态转换图
小结
习题3
拓展阅读:正则表达式的扩展与汉语词法分析
第4章 语法分析概述及递归子程序法
4.1 语法分析概述
4.1.1 上下文无关文法的定义
4.1.2 推导
4.1.3 分析树
4.1.4 二义性
4.1.5 验证文法生成的语言
4.1.6 非上下文无关语言的构造
4.2 自上而下分析
4.2.1 自上而下分析的一般方法
4.2.2 存在问题及解决方法
4.3 递归下降分析法
小结
习题4
拓展阅读:递归子程序的应用
第5章 符号表管理
5.1 概述
5.2 符号表的组织和内容
5.3 非分程序结构语言的符号表组织
5.4 分程序结构语言的符号表组织
小结
习题5
拓展阅读:Open64的符号表设计
第6章 运行时存储空间的组织和管理
6.1 概述
6.2 静态存储分配
6.3 动态存储分配
6.4 面向对象语言的存储分配策略
6.4.1 类和对象
6.4.2 面向对象程序运行时的特征
6.4.3 对象的存储组织
6.4.4 例程的动态绑定
小结
习题6
拓展阅读:垃圾回收
第7章 源程序的中间形式
7.1 波兰表示
7.2 n元表示
7.2.1 四元式
7.2.2 三元式
7.2.3 静态单赋值形式
7.3 图形表示
7.3.1 抽象语法树
7.3.2 有向无环图
7.4 抽象机代码
小结
习题7
拓展阅读:LLVM和LLVM IR
第8章 错误处理
8.1 概述
8.2 错误分类
8.3 错误的诊察和报告
8.4 错误处理技术
8.4.1 词法错误的恢复和校正
8.4.2 语法错误的恢复和校正
8.4.3 语义错误的恢复和校正
小结
习题8
拓展阅读:中文错误处理
第9章 语法制导翻译技术
9.1 翻译文法和语法制导翻译
9.2 属性翻译文法
9.3 自上而下语法制导翻译
9.3.1 递归下降翻译器
9.3.2 LL(1)翻译器
小结
习题9
拓展阅读:前沿语法制导翻译技术
第10章 语义分析和代码生成
10.1 语义分析的概念
10.2 栈式抽象机及其汇编指令
10.3 声明的处理
10.3.1 符号常量的处理
10.3.2 简单变量的处理
10.3.3 数组的处理
10.4 表达式的处理
10.5 赋值语句的处理
10.6 控制语句的处理
10.6.1 if语句的处理
10.6.2 while语句的处理
10.6.3 for语句的处理
10.7 过程调用和返回的处理
小结
习题10
拓展阅读:自然语言处理
模块3 编译前段分析及其自动化生成技术
第11章 词法分析器的自动生成技术
11.1 有限自动机
11.1.1 不确定的有限自动机
11.1.2 确定的有限自动机
11.1.3 NFA到DFA的转换
11.1.4 DFA的化简
11.2 从正则表达式到有限自动机
11.3 从正则文法到有限自动机
11.4 词法分析器生成工具Lex
小结
习题11
拓展阅读:有限自动机的应用
第12章 语法分析及自动生成技术
12.1 自上而下分析
12.1.1 自上而下分析的一般方法
12.1.2 消除左递归
12.1.3 提取左公因子
12.1.4 LL(1)文法
12.1.5 递归下降的预测分析
12.1.6 非递归的预测分析
12.1.7 构造分析表
12.1.8 预测分析的错误恢复
12.2 自下而上分析
12.2.1 归约
12.2.2 句柄
12.2.3 用栈实现移进-归约分析
12.2.4 移进-归约分析的冲突
12.3 自下而上优先分析
12.3.1 简单优先分析法
12.3.2 运算符优先分析法
12.3.3 运算符优先分析算法
12.3.4 优先函数
12.3.5 运算符优先分析法的局限性
小结
习题12
拓展阅读:实际应用中语法分析器所面临的困境
第13章 自下而上语法分析——LR(k)分析方法
13.1 LR分析器
13.1.1 LR分析算法
13.1.2 LR文法和LR分析方法的特点
13.2 SLR分析
13.3 规范的LR分析
13.3.1 规范LR(1)项
13.3.2 构造LR(1)项集族
13.3.3 规范LR(1)语法分析表
13.4 LALR分析
13.4.1 LALR分析表的构造
13.4.2 高效构造LALR语法分析表的方法
13.5 非二义且非LR的上下文无关文法
13.5.1 用优先级和结合性解决冲突
13.5.2 悬空else的二义性
13.6 语法分析表的自动生成
13.6.1 终结符和产生式的优先级
13.6.2 结合规则
13.6.3 LR语法分析表的安排
13.7 语法分析器的生成器
13.7.1 分析器的生成器yacc
13.7.2 用yacc处理二义文法
13.7.3 yace的错误恢复
小结
习题13
拓展阅读:GLR算法与基于统计的语法分析算法
参考文献
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...