顶部
收藏

编译原理与技术


作者:
张昱 陈意云
定价:
27.20元
ISBN:
978-7-04-029839-0
版面字数:
390.000千字
开本:
16开
全书页数:
284页
装帧形式:
平装
重点项目:
暂无
出版时间:
2010-08-13
读者对象:
高等教育
一级分类:
计算机/教育技术类
二级分类:
计算机类专业核心课程
三级分类:
编译原理

本书介绍基本的编译原理与编译技术,是2009年度普通高等教育精品教材《编译原理》(第2版)的精简版。本书主要内容包括词法分析、语法分析、类型检查、运行时存储空间的组织和管理、中间代码生成、代码生成和代码优化、编译系统和运行系统、面向对象语言的编译等。本书取材广泛、新颖,图文并茂;强调对编译技术的理解,淡化对相关理论的学习;强调对各种方法的把握,淡化对各个算法的掌握。

本书可作为高等学校计算机科学及相关专业的少学时编译原理课程教材,也可供计算机软件工程技术人员参考使用。

  • 第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.1.8 阶段的分组
      • 1.1.9 解释器
    • 1.2 编译器技术的应用
      • 1.2.1 高级语言的实现
      • 1.2.2 针对计算机体系结构的优化
      • 1.2.3 新计算机体系结构的设计
      • 1.2.4 程序翻译
      • 1.2.5 提高软件开发效率的工具
    • 习题
  • 第2章 词法分析
    • 2.1 词法记号及属性
      • 2.1.1 词法记号、模式、词法单元
      • 2.1.2 词法记号的属性
      • 2.1.3 词法错误
    • 2.2 词法记号的描述与识别
      • 2.2.1 串和语言
      • 2.2.2 正规式
      • 2.2.3 正规定义
      • 2.2.4 状态转换图
    • 2.3 有限自动机
      • 2.3.1 不确定的有限自动机
      • 2.3.2 确定的有限自动机
      • 2.3.3 NFA到DFA的变换
      • 2.3.4 DFA的化简
    • 2.4 从正规式到有限自动机
    • 2.5 词法分析器的生成器
    • 习题
  • 第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.2.4 适当的表达式文法
      • 3.2.5 消除二义性
      • 3.2.6 消除左递归
      • 3.2.7 提左因子
    • 3.3 自上而下分析
      • 3.3.1 自上而下分析的一般方法
      • 3.3.2 LL(1)文法
      • 3.3.3 递归下降的预测分析
      • 3.3.4 非递归的预测分析
      • 3.3.5 构造预测分析表
      • 3.3.6 预测分析的错误恢复
    • 3.4 自下而上分析
      • 3.4.1 归约
      • 3.4.2 句柄
      • 3.4.3 用栈实现移进-归约分析
      • 3.4.4 移进-归约分析的冲突
    • 3.5 LR分析器
      • 3.5.1 构造SLR分析表
      • 3.5.2 LR分析算法
      • 3.5.3 其他LR分析表构造概述
      • 3.5.4 非二义且非LR的上下文无关文法
    • 3.6 语法分析器的生成器
      • 3.6.1 分析器的生成器Yacc
      • 3.6.2 用Yacc处理二义文法
      • 3.6.3 Yacc的错误恢复
    • 习题
  • 第4章 类型检查
    • 4.1 语法制导的翻译
      • 4.1.1 翻译方案
      • 4.1.2 语法树
      • 4.1.3 构造语法树的翻译方案
      • 4.1.4 翻译方案中属性的自下而上计算
      • 4.1.5 设计翻译方案的一些技巧
    • 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.4 类型表达式的等价
      • 4.4.1 类型表达式的结构等价
      • 4.4.2 类型表达式的名字等价
      • 4.4.3 记录类型
      • 4.4.4 类型表示中的环
    • 习题
  • 第5章 运行时存储空间的组织和管理
    • 5.1 局部存储分配
      • 5.1.1 过程
      • 5.1.2 名字的作用域和绑定
      • 5.1.3 活动记录
      • 5.1.4 局部数据的布局
      • 5.1.5 程序块
    • 5.2 全局栈式存储分配
      • 5.2.1 运行时内存的划分
      • 5.2.2 活动树和运行栈
      • 5.2.3 调用序列
      • 5.2.4 栈上可变长度数据
      • 5.2.5 悬空引用
    • 5.3 非局部名字的访问
      • 5.3.1 无过程嵌套的静态作用域
      • 5.3.2 有过程嵌套的静态作用域
    • 5.4 参数传递
      • 5.4.1 值调用
      • 5.4.2 引用调用
      • 5.4.3 换名调用
    • *5.5 堆管理
      • 5.5.1 内存管理器
      • 5.5.2 计算机内存分层
      • 5.5.3 程序局部性
      • 5.5.4 手工回收请求
    • 习题
  • 第6章 中间代码生成
    • 6.1 中间语言
      • 6.1.1 后缀表示
      • 6.1.2 图形表示
      • 6.1.3 三地址代码
      • 6.1.4 静态单赋值形式
    • 6.2 声明语句
      • 6.2.1 过程中的声明
      • 6.2.2 作用域信息的保存
      • 6.2.3 记录的域名
    • 6.3 赋值语句
      • 6.3.1 符号表中的名字
      • 6.3.2 数组元素的地址计算
      • 6.3.3 数组元素地址计算的翻译方案
      • 6.3.4 类型转换
    • 6.4 布尔表达式和控制流语句
      • 6.4.1 布尔表达式
      • 6.4.2 控制流语句的中间代码结构
      • 6.4.3 布尔表达式的回填
      • 6.4.4 控制流语句的翻译
      • 6.4.5 开关语句的翻译
      • 6.4.6 过程调用的翻译
    • 习题
  • 第7章 代码生成和代码优化
    • 7.1 代码生成器设计中的问题
      • 7.1.1 目标程序
      • 7.1.2 指令选择
      • 7.1.3 寄存器分配
      • 7.1.4 计算次序选择
    • 7.2 目标语言
      • 7.2.1 目标机器的指令集
      • 7.2.2 指令代价
    • 7.3 基本块和流图
      • 7.3.1 基本块
      • 7.3.2 基本块的优化
      • 7.3.3 流图
      • 7.3.4 下次引用信息
    • 7.4 一个简单的代码生成器
      • 7.4.1 寄存器描述和地址描述
      • 7.4.2 代码生成算法
      • 7.4.3 寄存器选择函数
      • 7.4.4 为变址和指针语句产生代码
      • 7.4.5 条件语句
    • 7.5 代码优化概述
      • 7.5.1 优化的主要源头
      • 7.5.2 一个实例
      • 7.5.3 公共子表达式删除
      • 7.5.4 复写传播
      • 7.5.5 死代码删除
      • 7.5.6 代码外提
      • 7.5.7 强度削弱和归纳变量删除
    • 习题
  • 第8章 编译系统和运行系统
    • 8.1 C语言的编译系统
      • 8.1.1 预处理器
      • 8.1.2 汇编器
      • 8.1.3 连接器
      • 8.1.4 目标文件的格式
      • 8.1.5 符号解析
      • 8.1.6 静态库
      • 8.1.7 可执行目标文件及装入
      • 8.1.8 动态连接
      • 8.1.9 处理目标文件的一些工具
    • 8.2 Java语言的运行系统
      • 8.2.1 Java虚拟机语言简介
      • 8.2.2 Java虚拟机
      • 8.2.3 即时编译器
    • 习题
  • *第9章 面向对象语言的编译
    • 9.1 面向对象语言的概念
      • 9.1.1 对象和对象类
      • 9.1.2 继承
      • 9.1.3 信息封装
    • 9.2 方法的编译
    • 9.3 继承的编译方案
      • 9.3.1 单一继承的编译方案
      • 9.3.2 多重继承的编译方案
    • 习题
  • 附录
    • 附录1 PL/0语言及其实现
    • 附录2 基于PL/0语言的课程实践选题
  • 参考文献

相关图书