感谢csdn的好意,今天收到用9900C币换购的图书:
http://bank.csdn.net/product/389
程序设计语言-实践之路(第二版)(含光盘1张)
第2版的特点
涵盖程序语言设计的最新发展,包括C99、C#2.0和Java 5。在新增的一章和全书通篇中讨论了脚本语言的有关问题,涵盖Perl、Python、Ruby、Tcl、PHP、JavaScript、XSLT和其他语言。
包含了深入探讨并发性的一章,其中讨论了C#和新的、Java并发包(JSR 166)。
许多章节和论题增加了内容,包括迭代器、异常、多态性、模板/泛型、作用域规则和声明顺序、分别编译、废料收集、线程和同步等类型推理和异常处理等。
随书配套光盘上提供了许多进一步学习的材料,包括高级的和可选的内容,成百的工作实例,直接可用的搜索功能,以及对WWW上的手册、教程、编译器和解释器的活链接。
目录
第1部分 基础 1
第1章 引 言 3
1.1 语言设计的艺术 5
1.2 程序设计语言的谱系 8
1.3 为什么研究程序设计语言 11
1.4 编译和解释 13
1.5 程序设计环境 21
1.6 编译概览 22
1.6.1 词法和语法分析 23
1.6.2 语义分析和中间代码生成 25
1.6.3 目标代码生成 28
1.6.4 代码改进 30
1.7 总结和注记 31
1.8 练习 32
1.9 探索 33
1.10 有关参考文献 35
第2章 程序设计语言的语法 37
2.1 描述语法:正则表达式和上下文无关文法 38
2.1.1 单词和正则表达式 39
2.1.2 上下文无关文法 42
2.1.3 推导和语法分析树 43
2.2 扫描 46
2.2.1 生成一个自动机 49
2.2.2 扫描器代码 54
2.2.3 表驱动扫描 58
2.2.4 词法错误 58
2.2.5 有意义的注释 60
2.3 语法分析 61
2.3.1 递归下降 64
2.3.2 表格驱动的自上而下语法分析 70
2.3.3 自下而上的语法分析 80
2.3.4 语法错误 CD 1·93
2.4 理论基础 CD 13·94
2.4.1 有穷自动机 CD 13
2.4.2 下推自动机 CD 16
2.4.3 文法和语言类 CD 17
2.5 总结和注记 95
2.6 练习 96
2.7 探索 101
2.8 有关参考文献 101
第3章 名字、作用域和约束 103
3.1 约束时间的概念 104
3.2 对象生存期和存储管理 106
3.2.1 静态分配 107
3.2.2 基于栈的分配 109
3.2.3 堆分配 111
3.2.4 废料收集 113
3.3 作用域规则 114
3.3.1 静态作用域 115
3.3.2 嵌套作用域 117
3.3.3 声明的顺序 119
3.3.4 模块 124
3.3.5 模块类型和类 128
3.3.6 动态作用域 131
3.4 作用域的实现 CD 23·135
3.4.1 符号表 CD 23
3.4.2 关联表和中心引用表 CD 27
3.5 引用环境的约束 136
3.5.1 子程序闭包 138
3.5.2 一级和二级子程序 140
3.6 作用域里的约束 142
3.6.1 别名 142
3.6.2 重载 143
3.6.3 多态性及相关概念 145
3.7 分别编译 CD 30·149
3.7.1 C的分别编辑 CD 30
3.7.2 包和自动头文件推理 CD 33
3.7.3 模块分层结构 CD 35
3.8 总结和注记 149
3.9 练习 151
3.10 探索 157
3.11 有关参考文献 158
第4章 语义分析 161
4.1 语义分析器所扮演的角色 162
4.2 属性文法 166
4.3 属性求值 168
4.4 动作例程 179
4.5 属性的空间管理 CD 39·181
4.5.1 自下而上求值 CD 39
4.5.2 自上而下求值 CD 44
4.6 语法树的标注 182
4.7 总结和注记 187
4.8 练习 189
4.9 探索 193
4.10 有关参考文献 194
第5章 目标机体系结构 195
5.1 存储器层次结构 196
5.2 数据表示 199
5.2.1 计算机算术 CD 54·199
5.3 指令集体系结构 201
5.3.1 寻址模式 201
5.3.2 条件分支 202
5.4 体系结构和实现 204
5.4.1 微程序设计 205
5.4.2 微处理器 206
5.4.3 RISC 207
5.4.4 两个实例体系结构:x86和MIPS CD 59·208
5.4.5 伪汇编记法形式 209
5.5 为新型处理器做编译 210
5.5.1 维持流水线满 211
5.5.2 寄存器分配 216
5.6 总结和注记 221
5.7 练习 223
5.8 探索 226
5.9 有关参考文献 227
第2部分 语言设计的核心问题 231
第6章 控制流 233
6.1 表达式求值 234
6.1.1 优先级和结合性 236
6.1.2 赋值 238
6.1.3 初始化 246
6.1.4 表达式里的顺序问题 249
6.1.5 短路求值 252
6.2 结构化和非结构化的流程 254
6.2.1 goto的结构化替代品 255
6.2.2 继续 259
6.3 顺序复合 260
6.4 选择 261
6.4.1 短路条件 262
6.4.2 case/switch语句 265
6.5 迭代 270
6.5.1 枚举控制的循环 271
6.5.2 组合循环 277
6.5.3 迭代器 278
6.5.4 Icon的生成器 CD 69·284
6.5.5 逻辑控制的循环 284
6.6 递归 287
6.6.1 迭代和递归 287
6.6.2 应用序和正则序求值 291
6.7 非确定性 CD 72·295
6.8 总结和注记 296
6.9 练习 298
6.10 探索 304
6.11 有关参考文献 305
第7章 数据类型 307
7.1 类型系统 308
7.1.1 类型检查 309
7.1.2 多态性 309
7.1.3 类型的定义 311
7.1.4 类型的分类 312
7.1.5 正交性 319
7.2 类型检查 321
7.2.1 类型等价 321
7.2.2 类型相容 327
7.2.3 类型推理 332
7.2.4 ML的类型系统 CD 81·335
7.3 记录(结构)与变体(联合) 336
7.3.1 语法和操作 337
7.3.2 存储布局和紧缩 338
7.3.3 with语句 CD 90·341
7.3.4 变体记录 341
7.4 数组 349
7.4.1 语法和操作 349
7.4.2 维数、上下界和分配 353