账号: 密码:
中国大学出版社协会 | 首页 | 宏观指导 | 出版社天地 | 图书代办站 | 教材图书信息 | 教材图书评论 | 在线订购 | 教材征订
搜索 新闻 图书 ISBN 作者 音像 出版社 代办站 教材征订
购书 请登录 免费注册 客服电话:010-62510665 62510769
图书查询索引 版别索引 分类索引 中图法分类 专业分类 用途分类 制品类型 读者对象 自分类 最新 畅销 推荐 特价 教材征订
综合查询
编译原理基础(第三版) - 高等学校新工科计算机类专业系列教材 - 中国高校教材图书网
书名: 编译原理基础(第三版) 高等学校新工科计算机类专业系列教材
ISBN:9787560677378 条码:5606
作者: 王献青  相关图书 装订:
印次:3-1 开本:16开
定价: ¥64.00  折扣价:¥60.80
折扣:0.95 节省了3.2元
字数: 564千字
出版社: 西安电子科技大学出版社 页数: 384页
发行编号: 每包册数: 7
出版日期: 2025-9-1
小团购 订购 咨询 推荐 打印 放入存书架

内容简介:
本书系统地介绍了程序设计语言翻译的基本原理与技术,主要从以下三个方面进行讨论。
一方面介绍语言翻译的基本原理与方法,主要内容包括编译器构造的所有重要阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、运行时的存储分配,以及目标代码的生成等。
另一方面讨论编译器构造和程序分析技术中需要重点关注的原理和方法,主要包括语法制导翻译与属性计算、类型与类型检查、数据流分析等。
再一方面探讨构造编译器的一些技术,主要包括手工编写词法/语法分析器的相关方法、自动生成工具LEX/YACC的工作原理与使用方法,以及配合教学的编译器前端AMCC。
本书既可作为高等院校计算机相关专业或非计算机专业本科生、研究生的教材,也可作为软件技术人员和程序设计语言爱好者的参考书。

作者简介:
 
章节目录:
第1章 引言 1
1.1 从面向机器的语言到面向人类的语言 1
1.2 语言之间的翻译 2
1.3 编译器与解释器 3
1.4 编译器的工作原理与基本组成 5
1.4.1 通用程序设计语言的主要成分 5
1.4.2 以阶段划分编译器 6
1.4.3 编译器各阶段的工作 7
1.4.4 编译器的分析/综合模式 11
1.4.5 编译器扫描的遍数 13
1.5 编译器的编写 13
1.6 本章小结 14
习题 15
第2章 词法分析 16
2.1 词法分析中的若干问题 16
2.1.1 记号、模式与单词 16
2.1.2 记号的属性 18
2.1.3 词法分析器的作用 19
2.1.4 词法分析器的工作方式 19
2.2 模式的形式化描述 20
2.2.1 字符串与语言 20
2.2.2 正规式与正规集 22
2.2.3 记号的说明 24
2.3 记号的识别——有限自动机 26
2.3.1 不确定的有限自动机 26
2.3.2 确定的有限自动机 29
2.3.3 有限自动机的等价 32
2.4 从正规式到DFA 32
2.4.1 从正规式到NFA 32
2.4.2 从NFA到DFA 35
2.4.3 最小化DFA 40
2.4.4* DFA的“短路”计算 45
2.5 词法分析器的实现 50
2.5.1 输入缓冲区 51
2.5.2 将DFA用作识别器 53
2.5.3 表驱动的识别器 56
2.5.4 直接编码的识别器 57
2.5.5 手工编码的识别器 62
2.5.6 处理关键字 63
2.6 本章小结 64
习题 65
第3章 语法分析 68
3.1 语法分析的若干问题 68
3.1.1 语法分析器的作用 68
3.1.2 语法错误的处理原则 69
3.2 上下文无关文法 70
3.2.1 上下文无关文法的定义与表示 70
3.2.2 CFG产生语言的基本方法——
推导 72
3.2.3 推导、分析树与语法树 73
3.2.4 二义性与二义性的消除 75
3.3 语言与文法简介 80
3.3.1 正规式与上下文无关文法 80
3.3.2 上下文有关文法 81
3.3.3 形式语言与自动机简介 83
3.4 自上而下语法分析 85
3.4.1 自上而下分析的一般方法 85
3.4.2 消除左递归 85
3.4.3 提取左因子 88
3.4.4 FIRST和FOLLOW集合 89
3.4.5 递归下降的预测分析 92
3.4.6 非递归的预测分析 97
3.5 自下而上语法分析 103
3.5.1 自下而上分析的基本方法 103
3.5.2 LR分析 107
3.6* LR(1)与LALR(1)分析 116
3.6.1 SLR(1)分析器的弱点 116
3.6.2 LR(1)分析器 117
3.6.3 LALR(1)分析器 120
3.6.4 LR(1)与LALR(1)的关系 122
3.6.5 LR(1)与二义文法的关系 124
3.7* 编译器构造工具 125
3.7.1 词法分析器生成器LEX 126
3.7.2 语法分析器生成器YACC 135
3.7.3 语言识别器生成器简述 153
3.8 本章小结 156
习题 157
第4章 静态语义分析 161
4.1 语法制导翻译简介 161
4.1.1 语法与语义 161
4.1.2 属性与语义规则 162
4.1.3 语义规则的两种形式 163
4.1.4 LR分析翻译方案的设计 165
4.1.5 递归下降分析翻译方案的设计 166
4.2* 属性的计算 168
4.2.1 综合属性与自下而上分析 168
4.2.2 继承属性与自上而下分析 169
4.2.3 依赖图与属性计算 171
4.2.4 L_属性的增量分析 173
4.2.5 L_属性的自下而上计算 177
4.2.6 属性的空间分配 183
4.2.7 YACC源程序中的语法制导
翻译 186
4.3 中间代码简介 188
4.3.1 后缀式 188
4.3.2 三地址码 189
4.3.3 图形中间代码 192
4.4 符号表简介 193
4.4.1 符号表条目 194
4.4.2 名字的存储 195
4.4.3 名字的作用域 195
4.4.4 线性表 197
4.4.5 散列表 197
4.5 声明语句的翻译 199
4.5.1 变量的声明 200
4.5.2* 数组变量的声明 203
4.5.3 过程的定义与声明 210
4.5.4 记录的域名 221
4.6 简单算术表达式与赋值句 221
4.7 数组元素的引用 224
4.7.1 数组元素的地址计算 225
4.7.2 数组元素引用的语法制导翻译 226
4.8 布尔表达式 228
4.8.1 布尔表达式的作用与结构 228
4.8.2 布尔表达式的计算方法 229
4.8.3 直接计算的语法制导翻译 230
4.8.4 短路计算的语法制导翻译 231
4.8.5 拉链与回填 233
4.9 控制语句 235
4.9.1 标号与无条件转移 236
4.9.2 条件转移 239
4.10 过程调用 241
4.11* 类型检查 242
4.11.1 类型与类型检查 243
4.11.2 类型系统 246
4.11.3 简单的类型检查 250
4.11.4 类型表达式的等价 254
4.11.5 多态函数的类型检查 257
4.11.6 特定多态的类型检查 263
4.12 本章小结 266
习题 268
第5章 运行环境 271
5.1 过程的动态特性 271
5.1.1 过程与活动 271
5.1.2 控制栈与活动记录 273
5.1.3 名字的绑定 274
5.2 运行时数据空间的组织 275
5.2.1 运行时内存的划分与数据
空间的存储分配策略 275
5.2.2 静态与动态分配简介 276
5.3 栈式动态分配 278
5.3.1 控制栈中的活动记录 278
5.3.2 调用序列与返回序列 279
5.3.3 栈式分配中对非本地名字的
访问 280
5.3.4 参数传递的实现 284
5.4 本章小结 286
习题 287
第6章 代码生成 289
6.1 代码生成的相关问题 289
6.2 简单的计算机模型 290
6.3 简单的代码生成器 292
6.3.1 基本块、流图与循环 292
6.3.2 下次引用信息与活跃信息 295
6.3.3 简单的代码生成 296
6.4 本章小结 298
习题 299
第7章 代码优化 300
7.1 局部优化 300
7.1.1 基本块的优化 300
7.1.2 窥孔优化 305
7.1.3 表达式的优化代码生成 307
7.2 独立于机器的全局优化 311
7.2.1 运行实例:快排序 311
7.2.2 全局公共子表达式 313
7.2.3 复写传播(Copy Propagation) 316
7.2.4 死代码消除(Dead-Code
Elimination) 316
7.2.5 代码外提(Code Motion) 317
7.2.6 归纳变量与强度削弱 317
7.3* 数据流分析简介 319
7.3.1 数据流抽取 320
7.3.2 数据流分析模式 321
7.3.3 基本块上的数据流模式 322
7.3.4 到达定值(Reaching Definitions) 322
7.3.5 活跃变量(Live Variable) 326
7.3.6 可用表达式(Available
Expression) 328
7.3.7 小结 330
7.4 本章小结 331
习题 332
附录A 一个示例性编译器前端 334
A.1 AMC语言 334
A.1.1 文法书写形式约定 334
A.1.2 翻译单元与声明 334
A.1.3 语句 335
A.1.4 表达式 337
A.1.5 词法规则 337
A.2 AMCC的构成与顶层流程 338
A.2.1 AMCC的编程思想 338
A.2.2 AMCC的组件构成 338
A.2.3 驱动器与顶层流程 340
A.2.4 模块划分与目录结构 340
A.3 词法分析模块 341
A.3.1 词法分析模块的构成 341
A.3.2 记号与记号池 342
A.3.3 词法分析的高层流程 343
A.3.4 识别记号的核心实现 344
A.4 语法分析模块 349
A.4.1 语法分析模块的构成 349
A.4.2 递归下降函数的构造方法 349
A.4.3 语法分析的高层流程 352
A.4.4 分析树的结构 354
A.4.5 分析树的遍历框架 355
A.5 符号表构建模块 359
A.5.1 作用域相关规则 359
A.5.2 符号表构建模块的任务 359
A.5.3 符号表构建模块的构成 360
A.5.4 构建符号表的过程说明 362
A.6 中间代码生成模块 365
A.6.1 中间代码生成模块的任务 365
A.6.2 中间代码生成模块的构成 365
A.6.3 中间代码生成的过程说明 366
A.7 错误处理与恢复 367
A.7.1 词法分析的错误恢复策略 367
A.7.2 语法分析的错误恢复 368
A.7.3 语义分析过程中的错误恢复 368
A.8 附录A小结 369
参考文献 370
精彩片段:
 
书  评:
 
其  它:
 



| 我的帐户 | 我的订单 | 购书指南| 关于我们 | 联系我们 | 敬告 | 友情链接 | 广告服务 |

版权所有 © 2000-2002 中国高校教材图书网    京ICP备10054422号-7    京公网安备110108002480号    出版物经营许可证:新出发京批字第版0234号
经营许可证编号:京ICP证130369号    技术支持:云因信息