编译程序设计艺术 理论与实践PDF电子书下载
- 电子书积分:12 积分如何计算积分?
- 作 者:(美)皮特曼,皮特斯编著
- 出 版 社:北京:机械工业出版社
- 出版年份:2010
- ISBN:9787111288107
- 页数:341 页
第1章 编译程序理论概述 1
1.1 简介 1
1.2 语言与翻译程序 1
1.3 文法的作用 2
1.4 若干例子 4
1.5 编译程序的结构 6
1.5.1 词法分析 7
1.5.2 字符串表 8
1.5.3 语法分析 9
1.5.4 约束 9
1.5.5 符号表 9
1.5.6 代码生成 9
1.5.7 优化 10
符号 11
缩略词 11
关键术语 11
练习 12
复习小测验 12
编译程序实验项目 13
进一步阅读 13
第2章 文法:乔姆斯基层次 14
2.1 简介 14
2.2 文法 14
2.2.1 字母表与串 14
2.2.2 非终结符与产生式 15
2.2.3 若干文法例子 15
2.3 乔姆斯基层次 18
2.4 文法及其机器 19
2.4.1 图灵机 19
2.4.2 线性有界自动机 20
2.4.3 下推自动机 20
2.4.4 删除空产生式 21
2.4.5 比较上下文无关文法和上下文敏感文法 22
2.4.6 有穷状态自动机 22
2.5 空串与空语言 23
2.6 规范推导 23
2.7 二义性 24
2.8 文法思维的艺术 25
2.8.1 有穷状态自动机的局限性 26
2.8.2 上下文无关文法的计数 27
2.8.3 对上下文敏感 29
小结 30
符号 31
缩略词 31
关键术语 31
练习 32
复习小测验 34
编译程序实验项目 35
进一步阅读 35
第3章 扫描程序和正则语言 37
3.1 词法分析简介 37
3.2 正则表达式 37
3.2.1 正则表达式代数 39
3.2.2 正则表达式的形式化特性 40
3.3 文法与正则表达式的转换 41
3.4 有穷状态自动机 44
3.5 不确定的有穷状态自动机 45
3.6 将文法转换为自动机 46
3.7 自动机的转换 48
3.7.1 删除空环路 49
3.7.2 删除空变迁 50
3.7.3 自动机的确定化 51
3.7.4 自动机的约简 52
3.8 将自动机转换为文法 53
3.9 左线性文法 54
3.10 在计算机上实现有穷状态自动机 54
3.11 扫描程序的特殊实现问题 59
3.11.1 输入字母表的大小 59
3.11.2 扫描程序自动机中的停机状态 60
3.11.3 过滤空格与注释 60
3.11.4 单词的输出 61
3.12 字符串表的实现 62
3.12.1 基于线性查找的实现 63
3.12.2 基于散列表的实现 64
3.12.3 基于查找树的实现 66
3.12.4 不同实现的性能比较 69
3.13 保留字 69
3.14 使用扫描程序生成工具 70
小结 70
符号 71
缩略词 71
关键术语 71
练习 72
复习小测验 74
编译程序实验项目 74
进一步阅读 75
第4章 分析程序和上下文无关语言 76
4.1 简介 76
4.2 下推自动机 76
4.2.1 停机条件的等价性 78
4.2.2 根据上下文无关文法构造下推自动机 79
4.3 LL(k)条件 81
4.3.1 First和Follow集 82
4.3.2 选择集 83
4.4 左递归 85
4.5 公共左因子 86
4.6 为上下文无关文法扩展正则表达式运算符 88
4.7 使用分析程序生成工具 89
4.7.1 使用TAG编译程序 90
4.7.2 使用YACC 92
4.8 递归下降分析程序 92
4.9 递归下降分析程序作为下推自动机 95
小结 95
缩略词 96
关键术语 96
练习 97
复习小测验 101
编译程序实验项目 101
进一步阅读 102
第5章 语义分析与属性文法 103
5.1 简介 103
5.2 属性文法 103
5.2.1 继承属性和综合属性 104
5.2.2 属性值流 107
5.3 非终结符作为属性求值函数 108
5.4 符号表作为属性 109
5.5 Micro-Modula的属性文法 110
5.6 在TAG编译程序中使用属性 113
5.7 作用域与标识符类别 114
5.7.1 标识符作用域的文法 114
5.7.2 标识符作用域例子分析 116
5.7.3 符号表的其他问题 120
5.8 在递归下降中实现属性 121
5.9 实现符号表 122
小结 123
符号 123
关键术语 123
练习 124
复习小测验 126
编译程序实验项目 126
进一步阅读 126
第6章 语法制导代码生成 128
6.1 简介 128
6.2 计算机硬件体系结构 128
6.3 栈机器的表达式求值 130
6.4 Itty Bitty栈机器 131
6.5 带属性的代码生成 134
6.5.1 运算符优先级与结合性质 137
6.5.2 程序结构的语义 138
6.5.3 向前分支问题 139
6.6 过程和函数的代码生成 143
6.7 块结构的栈帧管理 144
6.7.1 帧与帧指针 144
6.7.2 静态链与动态链 145
6.7.3 帧指针的Display向量 146
6.8 其他数据类型 148
6.9 结构化数据类型 149
6.9.1 指针类型 150
6.9.2 记录结构 151
6.9.3 数组的语义 151
6.10 其他数据结构 153
6.11 Itty Bitty栈机器的输入和输出 154
6.12 语法制导语义的局限 154
6.13 手工编写编译程序的代码生成 155
6.14 语法制导语义的应用 155
6.14.1 Tiny BASIC解释程序 155
6.14.2 Micro-Modula美化打印工具 156
小结 158
关键术语 158
练习 159
复习小测验 160
编译程序实验项目 160
进一步阅读 160
第7章 自底向上分析程序的自动化设计 162
7.1 简介 162
7.2 LR(k)分析程序 165
7.2.1 构造LR(k)状态机 166
7.2.2 一个LR(2)分析程序 168
7.2.3 归约与移进操作 168
7.3 冲突 169
7.4 例子:文法G2的冲突解析 169
7.5 在栈中保存状态 171
7.6 其他LR(k)分析程序:SLR 172
7.7 LALR(k)分析程序 174
7.8 自底向上分析程序的实现 175
7.9 出错恢复 177
7.10 LR分析程序中的属性求值 177
小结 178
关键术语 179
练习 180
复习小测验 180
编译程序实验项目 181
进一步阅读 181
第8章 变换属性文法 182
8.1 简介 182
8.2 程序的树表示 182
8.3 树变换文法 183
8.3.1 非生成的文法 186
8.3.2 一个TAG例子 187
8.3.3 求值次序 188
8.3.4 信息流与存储 188
8.3.5 带树值的属性 189
8.3.6 不确定的分析 191
8.4 组合串文法与树文法 191
8.5 TAG中的类型检查 192
8.6 基于变换的代码优化 193
8.6.1 数据流分析 193
8.6.2 数据流分析中使用属性文法 197
8.7 中间代码树表示的替代方案 198
8.7.1 四元式的数据流 199
8.7.2 循环的数据流分析 200
8.8 实用优化变换综述 203
8.8.1 模拟执行优化的类别 204
8.8.2 常量折叠分析 204
8.8.3 使用值编号检测公共子表达式 208
8.8.4 左移动提升 211
8.8.5 右移动提升 212
8.8.6 无用代码以及其他从右到左的数据流分析 216
8.8.7 数学等式与代码选择 216
8.8.8 循环结构分析 217
8.9 实现抽象语法树 220
8.10 实现TAG驱动的树变换 228
小结 231
符号 232
缩略词 232
关键术语 232
练习 233
复习小测验 234
编译程序实验项目 234
进一步阅读 234
第9章 代码生成与优化 237
9.1 简介 237
9.2 循环优化 237
9.2.1 循环的范围分析 238
9.2.2 归纳变量 239
9.2.3 循环展开 240
9.3 寄存器与内存分配 241
9.3.1 寄存器分配算法 242
9.3.2 表达式中的寄存器分配 243
9.3.3 更好的寄存器分配数据流分析 257
9.3.4 循环的寄存器分配 257
9.3.5 寻址模式 258
9.3.6 分支寻址选择 259
9.3.7 分支链 264
9.4 代码生成的复杂性 265
9.4.1 指令选择 266
9.4.2 强度削弱 268
9.5 专用指令 269
9.5.1 RISC和流水线处理器调度 269
9.5.2 向量处理器 272
9.6 代码优化的变形 276
9.6.1 代码优化的分类 276
9.6.2 窥孔优化 277
小结 277
缩略词 277
关键术语 278
练习 278
复习小测验 279
编译程序实验项目 279
进一步阅读 279
第10章 非过程式语言 281
10.1 简介 281
10.2 应用式语言的编译 282
10.2.1 Lisp语言的一些概念 283
10.2.2 尾递归 284
10.2.3 实现一个应用式语言的编译程序 285
10.3 变换属性文法的编译程序 293
10.3.1 TAG编译程序的组成部分 293
10.3.2 文法中的迭代运算符 294
10.3.3 向用户报告语法错误 295
10.3.4 自动构造扫描程序 296
10.3.5 TAG编译程序的语法分析 300
10.3.6 树变换 305
10.3.7 语法错误停机 307
小结 307
关键术语 308
练习 308
复习小测验 309
进一步阅读 309
附录A Itty Bitty Modula语法图 311
附录B TAG编译程序的TAG 313
附录C Itty Bitty栈机器的指令集 335
附录D 四种计算机的代码生成表 339
- 《东北民歌文化研究及艺术探析》(中国)杨清波 2019
- 《激光加工实训技能指导理实一体化教程 下》王秀军,徐永红主编;刘波,刘克生副主编 2017
- 《舞剧艺术论》张麟著 2019
- 《中国陈设艺术史》赵囡囡著 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《设计十六日 国内外美术院校报考攻略》沈海泯著 2018
- 《计算机辅助平面设计》吴轶博主编 2019
- 《语文教育教学实践探索》陈德收 2018
- 《高校转型发展系列教材 素描基础与设计》施猛责任编辑;(中国)魏伏一,徐红 2019
- 《彼得·布鲁克导演实践研究》邓小玲著 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017
- 《新工业时代 世界级工业家张毓强和他的“新石头记”》秦朔 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《AutoCAD机械设计实例精解 2019中文版》北京兆迪科技有限公司编著 2019