信息科学与技术丛书 编译器设计之路 作者:裘巍编著出版时间:2011内容简介 本书系统地介绍了一个实际的Pascal编译器Neo Pascal的设计与实现。结合Neo Pascal的源代码,详细讲述了LL(1)语法分析器、符号表系统、中间表示、类型系统、优化技术、运行时刻的存储管理、代码生成器等编译器设计的核心话题。各章都附有少量以实践应用为主的练习题,既可作为阅读思考题,也可作为课程设计选题。与国内其他介绍编译技术的图书相比,本书更关注的是编译器的实现细节,而不仅仅局限于理论阐述。本书可供从事编译器设计相关工作的工程人员阅读,也可作为高等院校计算机专业的编译原理课程参考书。读者可在http://neopascal.sourceforge.net获得Neo Pascal的源代码及相关文档。目录出版说明前言第1章 概述1.1 编译技术概述1.1.1 程序设计语言基础1.1.2 程序设计语言的翻译机制1.1.3 编译器的基本结构1.2 Pascal语言基础1.2.1 Pascal语言简介1.2.2 Pascal程序基本组成1.2.3 Pascal的声明部分1.2.4 Pascal的类型1.2.5 Pascal的运算符1.2.6 Pascal的语句1.3 开发环境与Delphi基础1.3.1 开发环境与文件列表1.3.2 Delphi基础1.4 深入学习1.5 实践与思考1.6 大师风采——Niklaus Wirth第2章 词法分析2.1 词法分析概述2.1.1 词法分析的任务2.1.2 单词的分类2.2 词法分析器的设计2.2.1 识别单词2.2.2 转换图2.2.3 构造词法分析器2.3 词法分析器的实现2.3.1 词法定义2.3.2 构造转换图与转换表2.3.3 相关数据结构2.3.4 源代码实现2.4 深入学习2.5 实践与思考2.6 大师风采——Dennis M.Ritchie第3章 语法分析3.1 程序设计语言的语法描述3.1.1 上下文无关文法3.1.2 推导3.1.3 语法树3.1.4 归约简介3.2 语法分析概述3.2.1 语法分析的任务3.2.2 自上而下的语法分析法3.2.3 构造语法分析器3.3 语法分析器的实现3.3.I文法定义3.3.2 语法分析表3.3.3 源代码实现3.4 深入学习3.5 实践与思考3.6 大师风采——Edsger Wybe Dijkstra第4章 符号表系统4.1 语义分析概述4.1.1 程序设计语言的语义4.1.2 语义分析与IR生成的任务4.1.3 语法制导翻译4.2 符号表设计4.2.1 符号表概述4.2.2 符号表的逻辑结构4.2.3 符号表的实例分析4.3 声明部分的实现4.3.1 相关数据结构4.3.2 主程序首部声明4.3.3 包含文件声日月部分4.3.4 标号声明部分4.3.5 常量声明部分4.3.6 类型声明部分4.3.7 变量声明部分4.3.8 过程、函数声明部分4.4 深入学习4.5 实践与思考4.6 大师风采——John Backus第5章 中间表示5.1 IR概述5.1.1 IR的作用5.1.2 IR设计及其级别5.1.3 设计IR的重要意义5.2 IR生成.5.2.1 三地址代码概述5.2.2 Neo Pascal三地址代码的实现5.2.3 翻译机制概述5.3 语句翻译概述5.3.1 语句翻译基础5.3 12翻译辅助函数及其实现5.4 if语句5.4.1 if语句的翻译5.4.2 源代码实现5.5 while/repeat语句5.5.1 while语句的翻译5.5.2 源代码实现5.5.3 repeat语句的翻译5.6 for语句5.6.1 for语句的翻译5.6.2 源代码实现5.7 case语句5.7.1 case语句的翻译5.7.2 源代码实现5.8 其他语句5.8.1 break、continue语句的翻译5.8.2 goto语句的翻译5.8.3 asm语句的翻译5.9 深入学习5.10 实践与思考5.11 大师风采——Kenneth E.Iverson第6章 表达式语义6.1 表达式概述6.2 类型系统基础6.2.1 类型基础6.2.2 类型系统6.2.3 类型转换6.3 类型系统的实现6.3.1 类型系统的设计6.3.2 IR的操作数6.3.3 类型相容的实现6.3.4 类型推断的实现6.4 表达式翻译6.4.1 表达式翻译基础6.4.2 深入表达式翻译6.4.3 表达式翻译的实现6.5 操作数翻译6.5.1 操作数的地址与形态6.5.2 操作数翻译基础6.5.3 简单变量操作数的翻译6.5.4 记录字段操作数的翻译6.5.5 数组翻译基础6.5.6 数组元素操作数的翻译6.5.7 指针运算的翻译6.6 深入学习6.7 实践与思考6.8 大师风采——Alan Kay第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.3.1 数据流的相关概念7.3.2 数据流分析的策略7.3.3 活跃变量分析7.3.4 ud链与du链7.3.5 更多数据流问题7.4 数据流分析的实现.7.4.1 定值点与引用点分析的基础7.4.2 定值点、引用点分析的相关数据结构7.4.3 定值点、引用点分析的实现7.4.4 活跃变量分析的实现7.4.5 ud链、du链分析的实现7.5 常量传播与常量折叠7.5.1 常量传播基础7.5.2 常量传播的实现7.6 复写传播7.6.1 复写传播的基础7.6.2 复写传播的实现7.7 代数简化7.7.1 代数简化基础7.7.2 代数简化的实现7.8 跳转优化7.8.1 跳转优化基础7.8.2 条件跳转优化的实现7.8.3 连续跳转优化的实现7.9 冗余代码删除7.9.1 冗余代码删除基础7.9.2 死代码删除的实现7.9.3 不可到达代码删除的实现7.1 0深入学习7.1 1实践与思考7.1 2大师风采——Richard Stallman第8章 运行时刻的存储管理8.1 存储管理概述8.1.1 存储区域8.1.2 存储布局8.1.3 存储分配基础8.2 栈式存储分配8.2.1 栈式存储分配基础8.2.2 i386栈式存储分配8.2.3 深入理解栈式存储分配8.3 存储分配的实现8.4 存储优化8.4.1 存储优化基础8.4.2 存储优化的实现8.5 深入学习8.6 实践与思考8.7 大师风采——Bjarne Stroustrup第9章 目标代码生成9.1 目标代码生成概述9.1.1 目标代码生成基础9.1.2 指令选择9.1.3 寄存器分配9.2 目标机简介9.2.1 目标机结构9.2.2 浮点处理单元9.2.3 操作数寻址方式9.2.4 ptr操作符9.2.5 一个完整的汇编程序9.3 构造代码生成器9.3.1 自动代码生成器基础9.3.2 指令模板9.3.3 寄存器描述9.3.4 寄存器分配9.3.5 代码生成器的基本结构9.4 深入学习9.5 实践与思考9.6 大师风采——Peter Naur 第10章 GCC内核与现代编译技术概述10.1 编译技术的现状及发展10.2 GCC内核分析10.2.1 GCC的基本结构10.2.2 GENERIC10.2.3 GIMPLE10.2.4 SSA10.2.5 RTL概述10.2 RTX10.3 动态编译技术简介10.3.1 动态编译技术基础10.3.2 运行时特定化10.3.3 动态二进制翻译10.4 并行编译技术简介10.4.1 并行编译技术基础10.4.2 并行计算机及其编译系统10.5 深入学习10.6 大师风采——Alan Perlis参考文献 上一篇: 云计算开发与安全 [(美)巴瓦尼 杜莱辛甘(Bhavani Thuraisingham) 著] 下一篇: 新手学编程ABC丛书 Java编程新手自学手册