编译原理与技术

副标题:无

作   者:李文生编著

分类号:

ISBN:9787302191711

微信扫一扫,移动浏览光盘

简介

   本书系统地介绍了编译程序的设计原理和基本实现技术,主要内容包   括词法分析、语法分析、语义分析、中间代码生成、代码生成和代码优化   等,还重点介绍了用于实现语义分析和中间代码生成的语法制导翻译技术   ,以及程序运行时存储空间的组织与管理。    在介绍基本理论和方法的同时,注重实际应用,介绍了LEX和YACC的使   用方法及原理,剖析了PL/0语言的编译程序,讨论了GCC编译程序的基本结   构。配合理论教学,给出了一些实践题目,旨在培养学生分析和解决问题   的能力。    本书内容充实、图文并茂、各章节内容循序渐进,并注意理论与实践   的结合。    本书可作为高等学校计算机科学与技术专业的本科生教材或参考书,   也可供其他专业的学生或从事计算机工作的工程技术人员阅读参考。   

目录

目录
第1章 编译概述
1.1 翻译和解释
1.1.1 程序设计语言
1.1.2 翻译程序
1.2 编译的阶段和任务
1.2.1 分析阶段
1.2.2 综合阶段
1.2.3 符号表管理
1.2.4 错误处理
1.3 编译有关的其他概念
1.3.1 前端和后端
1.3.2 “遍”的概念
1.4 编译程序的伙伴工具
1.4.1 预处理器
1.4.2 汇编程序
1.4.3 连接装配程序
1.5 编译原理的应用
习题1
第2章 形式语言与自动机基础
2.1 语言和文法
2.1.1 字母表和符号串
2.1.2 语言
2.1.3 文法及其形式定义
2.1.4 推导和短语
2.1.5 分析树及二义性
2.1.6 文法变换
2.2 有限自动机
2.2.1 确定的有限自动机
2.2.2 非确定的有限自动机
2.2.3 具有ε-转移的非确定的有限自动机
2.2.4 DFA的化简
2.3 正规文法与有限自动机的等价性
2.4 正规表达式与有限自动机的等价性
2.5 正规表达式与正规文法的等价性
2.5.1 正规定义式
2.5.2 表示的缩写
2.5.3 正规表达式转换为等价的正规文法
习题2
第3章 词法分析
3.1 词法分析程序与语法分析程序的关系
3.2 词法分析程序的输入与输出
3.2.1 输入缓冲区
3.2.2 词法分析程序的输出
3.3 记号的描述和识别
3.3.1 词法与正规文法
3.3.2 记号的文法
3.3.3 状态转换图与记号的识别
3.4 词法分析程序的设计与实现
3.4.1 文法及状态转换图
3.4.2 词法分析程序的构造
3.4.3 词法分析程序的实现
3.5 软件工具LEX
3.5.1 LEX源程序
3.5.2 LEX的工作原理
习题3
程序设计1
第4章 语法分析
4.1 语法分析程序
4.1.1 语法分析程序的地位
4.1.2 常用的语法分析方法
4.1.3 语法错误的处理
4.2 自顶向下分析方法
4.2.1 递归下降分析
4.2.2 递归调用预测分析
4.2.3 非递归预测分析
4.3 自底向上分析方法
4.3.1 规范归约
4.3.2 “移进-归约”方法的实现
4.4 LR分析方法
4.4.1 LR分析程序的模型及工作过程
4.4.2 SLR(1)分析表的构造
4.4.3 LR(1)分析表的构造
4.4.4 LALR(1)分析表的构造
4.4.5 LR分析方法对二义文法的应用
4.4.6 LR分析的错误处理与恢复
4.5 软件工具YACC
4.5.1 YACC源程序
4.5.2 YACC对二义文法的处理
4.5.3 用LEX建立YACC的词法分析程序
4.5.4 YACC内部名称
习题4
程序设计2
第5章 语法制导翻译技术
5.1 语法制导定义及翻译方案
5.1.1 语法制导定义
5.1.2 依赖图
5.1.3 计算次序
5.1.4 S属性定义和L属性定义
5.1.5 翻译方案
5.2 S属性定义的自底向上翻译
5.2.1 构造表达式的语法树
5.2.2 构造语法树的语法制导定义
5.2.3 S属性定义的自底向上实现
5.3 L属性定义的自顶向下翻译
5.3.1 消除翻译方案中的左递归
5.3.2 预测翻译程序的设计
5.4 L属性定义的自底向上翻译
5.4.1 去掉翻译方案中嵌入的动作
5.4.2 分析栈中的继承属性
5.4.3 模拟继承属性的计算
5.4.4 用综合属性代替继承属性
习题5
第6章 语义分析
6.1 语义分析的任务和地位
6.2 符号表
6.2.1 符号表的建立和访问时机
6.2.2 符号表内容
6.2.3 符号表操作
6.2.4 符号表组织
6.3 符号表的建立
6.3.1 过程中的声明语句
6.3.2 过程定义的处理
6.3.3 记录声明的处理
6.4 类型检查
6.4.1 类型表达式
6.4.2 类型等价
6.5 一个简单类型检查程序的说明
6.5.1 语言说明
6.5.2 确定标识符的类型
6.5.3 表达式的类型检查
6.5.4 语句的类型检查
6.5.5 类型转换
6.6 类型检查有关的其他主题
6.6.1 函数和运算符的重载
6.6.2 多态函数
6.6.3 错误恢复
习题6
程序设计3
第7章 运行环境
7.1 程序运行时的存储组织
7.1.1 程序运行空间的划分
7.1.2 控制栈与活动记录
7.1.3 作用域及名字绑定
7.2 存储分配策略
7.2.1 静态存储分配
7.2.2 栈式存储分配
7.2.3 堆式存储分配
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
第8章 中间代码生成
8.1 中间代码形式
8.1.1 图形表示
8.1.2 三地址代码
8.2 赋值语句的翻译
8.2.1 仅涉及简单变量的赋值语句
8.2.2 涉及数组元素的赋值语句
8.2.3 记录中域的访问
8.3 布尔表达式的翻译
8.3.1 翻译布尔表达式的方法
8.3.2 数值表示法
8.3.3 控制流表示法
8.4 控制语句的翻译
8.5 标号和转移语句的翻译
8.6 CASE语句的翻译
8.7 过程调用语句的翻译
习题8
第9章 代码生成
9.1 代码生成概述
9.1.1 代码生成程序的位置
9.1.2 代码生成程序设计有关的问题
9.2 基本块与流图
9.3 一个简单的代码生成程序
9.3.1 目标机器
9.3.2 下次引用信息
9.3.3 代码生成算法
习题9
第10章 代码优化
10.1 代码优化概述
10.1.1 代码优化程序的功能和位置
10.1.2 代码优化的主要种类
10.2 基本块优化
10.2.1 常数合并及常数传播
10.2.2 删除公共表达式
10.2.3 复制传播
10.2.4 削弱计算强度
10.2.5 改变计算次序
10.3 dag在基本块优化中的应用
10.3.1 基本块的dag表示
10.3.2 基本块的dag构造算法
10.3.3 dag的应用
10.3.4 dag构造算法的进一步讨论
10.4 循环优化
10.4.1 循环展开
10.4.2 代码外提
10.4.3 削弱计算强度
10.4.4 删除归纳变量
10.5 窥孔优化
10.5.1 删除冗余的传送指令
10.5.2 删除死代码
10.5.3 控制流优化
10.5.4 强度削弱及代数化简
习题10
第11章 编译程序的实现
11.1 实现方法
11.1.1 实现语言
11.1.2 自展法
11.1.3 移植法
11.1.4 编译程序构造举例
11.2 PL/0编译程序
11.2.1 PL/0语言
11.2.2 PL/0编译程序的结构
11.2.3 PL/0编译程序的词法分析
11.2.4 PL/0编译程序的语法分析
11.2.5 PL/0编译程序的出错处理
11.2.6 PL/0编译程序的代码生成及执行环境
11.2.7 PL/0程序编译和运行示例
11.3 GCC编译程序
11.3.1 GCC简介
11.3.2 GCC的系统结构与流程
11.3.3 GCC的分析程序
11.3.4 GCC的中间语言及中间代码生成
11.3.5 GCC的代码优化
11.3.6 GCC的代码生成
11.4 编译实践
11.4.1 Pascal-S语言说明
11.4.2 课程设计要求及说明
11.4.3 编译程序的测试
附录 PL/0编译程序源程序
参考文献
?;;B

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

编译原理与技术
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon