注册 登录 进入教材巡展
#
  • #
  • #

出版时间:2016-09

出版社:高等教育出版社

以下为《编译技术》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 高等教育出版社
  • 9787040463170
  • 1版
  • 183167
  • 44259673-0
  • 平装
  • 异16开
  • 2016-09
  • 590
  • 479
  • 工学
  • 软件工程
  • TP314
  • 计算机科学与技术、软件工程
  • 本科
内容简介

本书为“基于系统能力培养的计算机专业课程建设研究”项目规划教材,同时也是国家精品资源共享课程主讲教材。本书对传统编译技术课程内容进行了结构性改革,首先暂时抛开大量形式化方法,先给学生一个完整的编译过程,以及这个过程中涉及的编译技术,在该过程中同时介绍相关的理论和方法。对于编译过程中涉及的形式化方法、编译自动生成技术、编译优化技术等,则将其放在了一个完整的编译过程之后,作为必要的补充。

全书共分三部分。其中,第一部分基础篇(1~10章),包含编译技术概述、语言与文法基础、一个简单编译器的构造(一个完整的编译过程)。〖JP2〗第二部分提高篇(11~16章),重点介绍编译程序的自动化生成技术和代码优化及面向目标机的代码生成技术。第三部分实例篇(17~18章),给出两个小型编译系统的完整设计。与教材配套的课程网站(易课程网、爱课程网)包括课程教学视频、电子教案、案例源代码等教学资源。

本书可作为本科计算机类专业编译技术课程教材,也可供相关技术人员参考使用。

目录

 前辅文
 第1部分 基础篇
  第1章 编译概述
   1.1 什么是程序设计语言
    1.1.1 程序设计语言的定义方法
    1.1.2 程序设计语言的处理系统
    1.1.3 编译程序和解释程序
   1.2 与编译程序相关的处理系统
   1.3 编译程序和程序设计环境
   1.4 编译程序的构造
   1.5 编译技术在软件工程中的应用
    练习1
  第2章 文法和语言的概念和表示
   2.1 文法的非形式讨论
    2.1.1 语法树
    2.1.2 规则
    2.1.3 由规则推导句子
    练习2-1
   2.2 符号、符号串及其集合的运算
    2.2.1 字母表和符号串
    2.2.2 符号串及其集合的运算
    练习2-2
   2.3 文法和语言的形式定义
    2.3.1 文法的形式定义
    2.3.2 推导的形式定义
    2.3.3 语言的形式定义
    2.3.4 递归规则与递归文法
    2.3.5 短语、简单短语和句柄
    练习2-3
   2.4 语法树和二义性
    2.4.1 推导与语法树
    2.4.2 文法的二义性
    练习2-4
   2.5 符号串的分析
    2.5.1 自顶向下分析
    2.5.2 自底向上分析
   2.6 有关文法的实用限制
    练习2-5
   2.7 扩充的BNF表示和语法图
    2.7.1 扩充的BNF表示
    2.7.2 语法图
   2.8 文法和语言分类
  第3章 词法分析程序的设计
   3.1 词法分析程序的功能及实现方案
   3.2 单词的种类及词法分析程序的输出形式
   3.3 正则文法及其状态图
    3.3.1 状态图
    3.3.2 状态图的使用
   3.4 词法分析程序的设计与实现
    3.4.1 文法及其状态图
    3.4.2 词法分析程序的构造
    3.4.3 词法分析程序的实现
    练习3
  第4章 语法分析(一)
   4.1 自顶向下分析方法
    4.1.1 带回溯的自顶向下分析方法
    4.1.2 存在的问题及解决办法
    练习4-1
   4.2 递归下降分析法
    4.3 基于递归下降分析法的语法分析程序构造
    练习4-2
  第5章 符号表管理技术
   5.1 概述
    5.1.1 符号表的概念及建立和访问时间
    5.1.2 符号表的重要性和作用
    5.1.3 在符号表上的操作
   5.2 符号表的组织和内容
    5.2.1 符号表的结构与内容
    5.2.2 符号表的组织方式
   5.3 非分程序结构语言的符号表组织
    5.3.1 标识符的作用域及基本处理方法
    5.3.2 符号表的组织方式
   5.4 分程序结构语言的符号表组织
    5.4.1 标识符的作用域及基本处理方法
    5.4.2 定位和重定位操作
    5.4.3 符号表的组织方式
    练习5
  第6章 运行时的存储组织及管理
   6.1 静态存储分配
    练习6-1
   6.2 动态存储分配
    6.2.1 活动记录
    6.2.2 参数区
    6.2.3 display区
    6.2.4 运行时的地址计算
    6.2.5 递归过程的处理
   6.3 内存垃圾回收器
    6.3.1 引用计数
    6.3.2 标记和清除垃圾回收器
    6.3.3 标记紧缩算法
    6.3.4 拷贝回收算法
    6.3.5 分代垃圾回收器
    练习6-2
  第7章 源程序的中间形式
   7.1 波兰表示
   7.2 N-元表示
   7.3 抽象语法树
   7.4 抽象机代码
    7.4.1 可移植性和抽象机
    7.4.2 Pascal的P-code抽象机
    7.4.3 P-code指令
    练习7
  第8章 错误处理
   8.1 概述
   8.2 错误的分类
   8.3 错误的检查与报告
   8.4 错误处理技术
    8.4.1 错误改正
    8.4.2 错误局部化处理
    8.4.3 目标程序运行时错误检测与处理
    8.4.4 遏止重复的错误信息
  第9章 语法制导翻译技术
   9.1 翻译文法
   9.2 语法制导翻译
   9.3 属性翻译文法
    9.3.1 综合属性
    9.3.2 继承属性
    9.3.3 属性翻译文法
    9.3.4 属性翻译文法举例:算术表达式的翻译
    练习9-1
   9.4 自顶向下语法制导翻译
    9.4.1 翻译文法的自顶向下翻译
    练习9-2
    9.4.2 属性翻译文法的自顶向下翻译
    练习9-3
  第10章 语义分析和代码生成
   10.1 语义分析的概念
   10.2 栈式抽象机及其汇编指令
   10.3 声明语句的处理
    10.3.1 常量类型
    10.3.2 简单变量
    10.3.3 数组变量
    10.3.4 记录变量
    10.3.5 过程声明
   10.4 表达式语句
   10.5 赋值语句
   10.6 控制语句
    10.6.1 if语句
    10.6.2 分情形语句
    10.6.3 repeat-while语句
    10.6.4 for循环语句
   10.7 过程调用和返回语句
    10.7.1 参数的基本传递形式
    10.7.2 过程调用
    10.7.3 返回语句和过程终止
   10.8 输入/输出语句
    10.8.1 输入语句
    10.8.2 输出语句
    10.9 编译程序的辅助功能
    练习10
 第2部分 提高篇
  第11章 词法分析程序的自动生成技术
   11.1 正则文法与正则表达式
    11.1.1 正则表达式
    11.1.2 正则文法转换为正则表达式
    11.1.3 正则表达式转换为正则文法
   11.2 有穷自动机
    11.2.1 确定的有穷自动机
    11.2.2 不确定的有穷自动机
    11.2.3 NFA的确定化
    11.2.4 确定有穷自动机的化简(最小化)
    11.2.5 正则表达式与有穷自动机的等价性
    11.2.6 正则文法与有穷自动机的等价性
   11.3 词法分析程序的自动生成器
    11.3.1 Lex源程序(Lex的输入文件)
    11.3.2 Lex的实现
    练习11
  第12章 语法分析(二)
   12.1 LL(1)分析方法
    12.1.1 LL(1)分析器的逻辑结构及工作过程
    12.1.2 LL(1)分析表的构造方法
    练习12-1
   12.2 自底向上分析方法
   12.3 算法优先分析法
    12.3.1 方法概述
    12.3.2 直观算符优先分析法
    12.3.3 算符优先分析法的进一步讨论
    练习12-2
   12.4 LR语法分析方法
    12.4.1 概念和术语
    练习12-3
    12.4.2 LR分析算法
    练习12-4
    12.4.3 LR文法
    12.4.4 构造SLR语法分析表
    练习12-5
    12.4.5 构造规范LR语法分析表
    练习12-6
    12.4.6 构造LALR语法分析表
    练习12-7
  第13章 语法制导翻译技术(二)*
   13.1 * LL(1)文法的语法制导翻译
    13.1.1 * 翻译文法的自顶向下翻译——LL(1)翻译器
    练习13-1
    13.1.2 * 属性文法自顶向下翻译的实现——下推机法
    练习13-2
   13.2 *自底向上语法制导翻译
    13.2.1 波兰翻译
    13.2.2 S-属性文法
    练习13-3
  第14章 代码优化
   14.1 基本块和流图
   14.2 基本块内优化
    14.2.1 基本块的DAG图表示
    14.2.2 消除局部公共子表达式
    14.2.3 数组、指针及函数调用
    14.2.4 从DAG图重新导出中间代码
    14.2.5 窥孔优化
    14.2.6 常数合并和传播
   14.3 全局优化
    14.3.1 数据流分析
    14.3.2 活跃变量分析
    14.3.3 定义-使用链、网和冲突图
    14.3.4 消除全局公共子表达式
    14.3.5 复制传播
    14.3.6 死代码删除
   14.4 循环优化
    14.4.1 循环交换
    14.4.2 循环展开
    14.4.3 代码外提和循环强度削弱
    练习14
  第15章 目标代码生成及优化
   15.1 微处理器体系结构简介
    15.1.1 指令集架构
    15.1.2 存储层次架构
    15.1.3 流水线
   15.2 地址空间
    15.2.1 程序地址空间的实例分析
    15.2.2 程序运行栈的设计
   15.3 寄存器的分配和指派
    15.3.1 全局寄存器分配
    15.3.2 临时寄存器分配
    15.4 指令选择
    练习15
  第16章 编译程序生成方法和工具
   16.1 编译程序的书写语言
   16.2 自展
   16.3 移植
   16.4 编译程序的生成工具
    16.4.1 语法分析器的生成器YACC
    16.4.2 用YACC处理二义文法
    16.4.3 用Lex建立YACC的词法分析器
    16.4.4 YACC的错误恢复
    练习16
 第3部分 实例篇
  第17章 PL/0简单编译系统
   17.1 PL/0语言
   17.2 PL/0编译系统结构
   17.3 PL/0的词法分析
   17.4 PL/0的语法分析
   17.5 出错处理
   17.6 目标代码的生成和解释执行
   17.7 PL/0程序编译和运行举例
  第18章 Pascal-S编译系统
   18.1 Pascal-S语言
   18.2 Pascal-S编译程序的结构
   18.3 Pascal-S编译程序
    18.3.1 表格
    18.3.2 编译初启
    18.3.3 实用程序
    18.3.4 词法分析及处理
    18.3.5 语法分析处理
    18.3.6 出错处理
   18.4 Pascal-S解释执行程序
    18.4.1 P代码指令系统
    18.4.2 运行栈
    18.4.3 运行时的display
    18.4.4 运行出错处理和现场剖析打印
   18.5 编译及运行的例子
 参考文献