《编译器构造》电子书下载

编译器构造txt,chm,pdf,epub,mobi下载
作者: Charles N. Fischer / Ron K. Cytron / Richard J. LeBlanc Jr.
出版社: 清华大学出版社
原作名: Crafting a Compiler
译者: 郭耀
出版年: 2012-5
页数: 444
定价: 59.00元
丛书: 世界著名计算机教材精选
ISBN: 9787302281047

内容简介  · · · · · ·

《世界著名计算机教材精选:编译器构造》是一本面向计算机系本科生的编译器教材。作者在三所美国大学拥有长达25年的编译器教学经验,在《世界著名计算机教材精选:编译器构造》中对编译器构造的基本知识与关键技术进行了全新的讲解。《世界著名计算机教材精选:编译器构造》的主要内容包括:编译器历史和概述、词法分析(扫描)、语法分析(包括自顶向下和自底向上的分析)、语法制导翻译、符号表和声明处理、语义分析、中间表示形式、虚拟机上的代码生成、运行时支持、目标代码生成和程序优化等。





目录  · · · · · ·

第1章 概述
1.1 编译的历史
1.2 编译器可以做什么
1.2.1 编译器生成的机器代码
1.2.2 目标代码格式
1.3 解释器
· · · · · · ()
第1章 概述
1.1 编译的历史
1.2 编译器可以做什么
1.2.1 编译器生成的机器代码
1.2.2 目标代码格式
1.3 解释器
1.4 语法和语义
1.4.1 静态语义
1.4.2 运行时语义
1.5 编译器的组织结构
1.5.1 扫描器
1.5.2 分析器
1.5.3 类型检查器(语义分析)
1.5.4 翻译器(程序综合)
1.5.5 符号表
1.5.6 优化器
1.5.7 代码生成器
1.5.8 编译器开发工具
1.6 程序设计语言和编译器设计
1.7 计算机体系结构和编译器设计
1.8 编译器设计的考虑事项
1.8.1 调试(开发)编译器
1.8.2 优化编译器
1.8.3 可重定向编译器
1.9 集成开发环境
练习
第2章 一个简单的编译器
2.1 ac语言的非形式化定义
2.2 ac语言的形式化定义
2.2.1 语法规范
2.2.2 词法单元规范
2.3 一个简单编译器中的阶段
2.4 扫描
2.5 分析
2.5.1 分析过程的预测
2.5.2 产生式的实现
2.6 抽象语法树
2.7 语义分析
2.7.1 符号表
2.7.2 类型检查
2.8 代码生成
练习
第3章 扫描--理论和实践
3.1 扫描器概述
3.2 正则表达式
3.3 示例
3.4 有限自动机和扫描器
3.4.1 确定性的有限自动机
3.5 扫描器生成工具Lex
3.5.1 定义Lex中的词法单元
3.5.2 字符类
3.5.3 使用正则表达式来定义词法单元
3.5.4 使用Lex进行字符处理
3.6 其他扫描器生成工具
3.7 构造扫描器的实际注意事项
3.7.1 处理标识符和字面常量
3.7.2 使用编译命令和列出源码行
3.7.3 扫描器的终止
3.7.4 向前看多个字符
3.7.5 性能上的考虑
3.7.6 词法错误恢复
3.8 正则表达式和有限自动机
3.8.1 把正则表达式转换为NFA
3.8.2 创建DFA
3.8.3 有限状态机的化简
3.8.4 把有限自动机转换为正则表达式
3.9 本章小结
练习
第4章 文法和分析
4.1 上下文无关文法
4.1.1 最左推导
4.1.2 最右推导
4.1.3 分析树
4.1.4 其他类型的文法
4.2 上下文无关文法的属性
4.2.1 简化的文法
4.2.2 二义性
4.2.3 语言定义中的错误
4.3 扩展文法的转换
4.4 分析器和识别器
4.5 文法分析的算法
4.5.1 文法表示
4.5.2 推导空字符串
4.5.3 First集合
4.5.4 Follow集合
练习
第5章 自顶向下分析
5.1 概述
5.2 LL(k)文法
5.3 递归下降的LL(1)分析器
5.4 表格驱动的LL(1)分析器
5.5 如何获得LL(1)文法
5.5.1 公共前缀
5.5.2 左递归
5.6 非LL(1)的语言
5.7 LL(1)分析器的属性
5.8 分析表的表示方法
5.8.1 精简方法
5.8.2 压缩方法
5.9 语法错误的恢复和修复
5.9.1 错误恢复
5.9.2 错误修复
5.9.3 LL(1)分析器中的错误检查
5.9.4 LL(1)分析器中的错误恢复
练习
第6章 自底向上分析
6.1 概述
6.2 移进-规约分析器
6.2.1 LR分析器和最右推导
6.2.2 把LR分析看做是编织过程(knitting)
6.2.3 LR分析引擎
6.2.4 LR分析表
6.2.5 LR(k)分析
6.3 LR(0)分析表的构造
6.4 冲突诊断
6.4.1 二义性文法
6.4.2 非LR(k)的文法
6.5 冲突解决方法和分析表的构造
6.5.1 SLR(k)分析表的构造
6.5.2 LALR(k)分析表的构造
6.5.3 LALR传播图
6.5.4 LR(k)分析表的构造
本章小结
练习
第7章 语法制导翻译
7.1 概述
7.1.1 语义动作和语义值
7.1.2 综合和继承属性
7.2 自底向上的语法制导翻译
7.2.1 示例
7.2.2 规则克隆
7.2.3 强加语义动作
7.2.4 进一步的文法重组
7.3 自顶向下的语法制导翻译
7.4 抽象语法树
7.4.1 具体和抽象语法树
7.4.2 高效的抽象语法树数据结构
7.4.3 创建抽象语法树的基础结构
7.5 抽象语法树的设计和构造
7.5.1 设计
7.5.2 构造
7.6 左值和右值的抽象语法树结构
7.7 抽象语法树的设计模式
7.7.1 结点的类层次结构
7.7.2 访问者模式
7.7.3 反射的访问者模式
本章小结
练习
第8章 符号表和声明处理
8.1 构造符号表
8.1.1 静态作用域
8.1.2 符号表的接口
8.2 块结构的语言和作用域
8.2.1 处理作用域
8.2.2 使用一个还是多个符号表
8.3 基本的实现技术
8.3.1 添加和查找名称
8.3.2 名字空间
8.3.3 一种高效的符号表实现方法
8.4 高级特性
8.4.1 记录和类型名
8.4.2 重载和类型层次结构
8.4.3 隐式声明
8.4.4 导出和导入命令
8.4.5 查找规则的修改
8.5 声明处理的基础
8.5.1 符号表中的属性
8.5.2 类型描述符的结构
8.5.3 使用抽象语法树进行类型检查
8.6 变量和类型声明
8.6.1 简单变量声明
8.6.2 类型名称的处理
8.6.3 类型声明
8.6.4 复杂的变量声明
8.6.5 静态数组类型
8.6.6 结构和记录类型
8.6.7 枚举类型
8.7 类和方法的声明
8.7.1 类声明的处理
8.7.2 方法声明的处理
8.8 类型检查简介
8.8.1 简单标识符和字面常量
8.8.2 赋值语句
8.8.3 表达式检查
8.8.4 复杂名称的检查
本章小结
练习
第9章 语义分析
9.1 控制结构的语义分析
9.1.1 可达和终止分析
9.1.2 if语句
9.1.3 While、Do和Repeat循环
9.1.4 for循环
9.1.5 break、continue、return和goto语句
9.1.6 switch和case语句
9.1.7 异常处理
9.2 方法调用的语义分析
9.3 本章小结
练习
第10章 中间表示形式
10.1 概述
10.1.1 示例
10.1.2 中端
10.2 Java虚拟机
10.2.1 概述和设计原则
10.2.2 类文件的内容
10.2.3 JVM指令
10.3 静态单赋值形式
10.3.1 重命名和φ-函数
练习
第11章 面向虚拟机的代码生成
11.1 代码生成的Visitor
11.2 类和方法声明
11.2.1 类声明
11.2.2 方法声明
11.3 MethodBodyVisitor
11.3.1 常量
11.3.2 局部存储的引用
11.3.3 静态引用
11.3.4 表达式
11.3.5 赋值
11.3.6 方法调用
11.3.7 域引用
11.3.8 数组引用
11.3.9 条件执行
11.3.10 循环
11.4 LHSVisitor
11.4.1 局部引用
11.4.2 静态引用
11.4.3 域引用
11.4.4 数组引用
练习
第12章 运行时支持
12.1 静态分配
12.2 栈分配
12.2.1 类和struct中的域访问
12.2.2 在运行时访问活动记录
12.2.3 处理类和对象
12.2.4 处理多个作用域
12.2.5 程序块级的分配
12.2.6 关于活动记录的其他内容
12.3 数组
12.3.1 静态的一维数组
12.3.2 多维数组
12.4 堆管理
12.4.1 分配机制
12.4.2 释放机制
12.4.3 自动垃圾回收
12.5 基于区域的内存管理
练习
第13章 目标代码生成
13.1 字节码的翻译
13.1.1 内存地址的分配
13.1.2 数组和对象的分配
13.1.3 方法调用
13.1.4 字节码翻译的例子
13.2 表达式树的翻译
13.3 寄存器分配
13.3.1 On-the-Fly寄存器分配
13.3.2 使用图着色法的寄存器分配
13.3.3 基于优先级的寄存器分配
13.3.4 过程间寄存器分配
13.4 代码调度
13.4.1 代码调度的改进
13.4.2 全局和动态的代码调度
13.5 自动的指令选择
13.5.1 使用BURS进行指令选择
13.5.2 使用Twig进行指令选择
13.5.3 其他方法
13.6 窥孔优化
13.6.1 窥孔优化的层次
13.6.2 窥孔优化的自动生成
练习
第14章 程序优化
14.1 概述
14.1.1 为什么要进行优化
14.2 控制流分析
14.2.1 控制流图
14.2.2 程序和控制流结构
14.2.3 直接过程调用图
14.2.4 深度优先生成树
14.2.5 支配关系
14.2.6 简单的支配算法
14.2.7 快速的支配算法
14.2.8 支配边界
14.2.9 区间
14.3 数据流分析简介
14.3.1 可用表达式
14.3.2 活跃变量
14.4 数据流框架
14.4.1 数据流求值图
14.4.2 交格
14.4.3 转换函数
14.5 求值
14.5.1 迭代
14.5.2 初始化
14.5.3 终止问题和快速框架
14.5.4 分配式框架
14.6 常量传播
14.7 SSA形式
14.7.1 添加? -函数
14.7.2 重命名
练习
参考文献
缩略语
· · · · · · ()

下载地址

发布者:幽若小晶

文件说明:zip / 解压密码:yiquhai.com

迅雷下载:您需要先后,才能查看

网盘下载:您需要先后,才能查看

关于内容:内容自于互联网,如果发现有违规内容请联系管理员删除!

作者: 幽若小晶

该用户很懒,还没有介绍自己。

20 条评论

发表评论

  1. Mango芒果先森的小司令 Mango芒果先森的小司令说道:
    1#

    忍不住一直看下去

  2. 这个杀手不太甜 这个杀手不太甜说道:
    2#

    超喜欢 包装好看

  3. 算命先生让我往北走 算命先生让我往北走说道:
    3#

    语言通俗易懂

  4. 蒙恩沪江英语特级 蒙恩沪江英语特级说道:
    4#

    很不错啊啊

  5. 显示更多