作者:
Terence Parr
出版社: 华中科技大学出版社
原作名: Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages
译者: 李袁奎 / 尧飘海
出版年: 2012-3-20
页数: 388
定价: 72.00元
装帧: 平装
ISBN: 9787560977003
出版社: 华中科技大学出版社
原作名: Language Implementation Patterns: Create Your Own Domain-Specific and General Programming Languages
译者: 李袁奎 / 尧飘海
出版年: 2012-3-20
页数: 388
定价: 72.00元
装帧: 平装
ISBN: 9787560977003
内容简介 · · · · · ·
《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出31种易于理解且常用的设计模式(每种都包括通用数据结构、算法、策略)。虽然示例是用Java编写的,但相信读者可以触类旁通,利用这些设计模式构建针对其他编程语言(既包括特定领域语言,也包括通用编程语言)的应用。
作者简介 · · · · · ·
Terence Parr是美国旧金山大学的计算机教授、研究生导师,他一直致力于从事ANTLR项目(antlr.org)和模板引擎(stringtemplate.org)的设计和开发工作。Terence曾担任IBM、洛克希德马丁、NeXT、雷诺汽车等公司的技术顾问,另著有《ANTLR权威指南》。
目录 · · · · · ·
第1部分 读取输入
第1章 初探语言应用 3
1.1 大局观 3
1.2 模式概览 5
1.3 深入浅出语言应用 9
1.4 为语言应用选择合适的模式 17
第2章 基本解析模式 21
2.1 识别式子的结构 22
2.2 构建递归下降语法解析器 24
2.3 使用文法DSL来构建语法解析器 26
2.4 词法单元和句子 27
第3章 高阶解析模式 49
3.1 利用任意多的向前看符号进行解析 50
3.2 记忆式解析 52
3.3 采用语义信息指导解析过程 52
第2部分 分析输入
第4章 从语法树构建中间表示 73
4.1 为什么要构建树 75
4.2 构建抽象语法树 77
4.3 简要介绍ANTLR 84
4.4 使用ANTLR文法构建AST 86
第5章 遍历并改写树形结构 101
5.1 遍历树以及访问顺序 102
5.2 封装访问节点的代码 105
5.3 根据文法自动生成访问者 107
5.4 将遍历与匹配解耦 110
第6章 记录并识别程序中的符号 131
6.1 收集程序实体的信息 132
6.2 根据作用域划分符号 134
6.3 解析符号 139
第7章 管理数据聚集的符号表 155
7.1 为结构体构建作用域树 156
7.2 为类构建作用域树 158
第8章 静态类型检查 181
第3部分 解释执行
第9章 构建高级解释器 219
9.1 高级解释器存储系统的设计 220
9.2 高级解释器中的符号记录 222
9.3 处理指令 224
第10章 构建字节码解释器 239
10.1 设计字节码解释器 241
10.2 定义汇编语言语法 243
10.3 字节码机器的架构 245
10.4 如何深入 250
第4部分 生成输出
第11章 语言的翻译 278
11.1 语法制导的翻译 280
11.2 基于规则的翻译 281
11.3 模型驱动的翻译 283
11.4 创建嵌套的输出模型 291
第12章 使用模板生成DSL 312
12.1 熟悉StringTemplate 313
12.2 StringTemplate的性质 316
12.2 从一个简单的输入模型生成模板 317
12.4 在输入模型不同的情况下复用模板 320
12.5 使用树文法来创建模板 323
12.6 对数据列表使用模板 330
12.7 编写可改变输出结果的翻译器 336
第13章 知识汇总 348
13.1 在蛋白质结构中查找模式 348
13.2 使用脚本构建三维场景 349
13.3 处理XML 350
13.4 读取通用的配置文件 352
13.5 对代码进行微调 353
13.6 为Java添加新的类型 354
13.7 美化源代码 355
13.8 编译为机器码 356
参考文献 359
索引 361
· · · · · · (收起)
第1章 初探语言应用 3
1.1 大局观 3
1.2 模式概览 5
1.3 深入浅出语言应用 9
1.4 为语言应用选择合适的模式 17
第2章 基本解析模式 21
2.1 识别式子的结构 22
2.2 构建递归下降语法解析器 24
2.3 使用文法DSL来构建语法解析器 26
2.4 词法单元和句子 27
第3章 高阶解析模式 49
3.1 利用任意多的向前看符号进行解析 50
3.2 记忆式解析 52
3.3 采用语义信息指导解析过程 52
第2部分 分析输入
第4章 从语法树构建中间表示 73
4.1 为什么要构建树 75
4.2 构建抽象语法树 77
4.3 简要介绍ANTLR 84
4.4 使用ANTLR文法构建AST 86
第5章 遍历并改写树形结构 101
5.1 遍历树以及访问顺序 102
5.2 封装访问节点的代码 105
5.3 根据文法自动生成访问者 107
5.4 将遍历与匹配解耦 110
第6章 记录并识别程序中的符号 131
6.1 收集程序实体的信息 132
6.2 根据作用域划分符号 134
6.3 解析符号 139
第7章 管理数据聚集的符号表 155
7.1 为结构体构建作用域树 156
7.2 为类构建作用域树 158
第8章 静态类型检查 181
第3部分 解释执行
第9章 构建高级解释器 219
9.1 高级解释器存储系统的设计 220
9.2 高级解释器中的符号记录 222
9.3 处理指令 224
第10章 构建字节码解释器 239
10.1 设计字节码解释器 241
10.2 定义汇编语言语法 243
10.3 字节码机器的架构 245
10.4 如何深入 250
第4部分 生成输出
第11章 语言的翻译 278
11.1 语法制导的翻译 280
11.2 基于规则的翻译 281
11.3 模型驱动的翻译 283
11.4 创建嵌套的输出模型 291
第12章 使用模板生成DSL 312
12.1 熟悉StringTemplate 313
12.2 StringTemplate的性质 316
12.2 从一个简单的输入模型生成模板 317
12.4 在输入模型不同的情况下复用模板 320
12.5 使用树文法来创建模板 323
12.6 对数据列表使用模板 330
12.7 编写可改变输出结果的翻译器 336
第13章 知识汇总 348
13.1 在蛋白质结构中查找模式 348
13.2 使用脚本构建三维场景 349
13.3 处理XML 350
13.4 读取通用的配置文件 352
13.5 对代码进行微调 353
13.6 为Java添加新的类型 354
13.7 美化源代码 355
13.8 编译为机器码 356
参考文献 359
索引 361
· · · · · · (收起)
"编程语言实现模式"试读 · · · · · ·
原文摘录 · · · · · · ( 全部 )
-
图11.2中所示是使用这些引擎的方法,需要给引擎提供输入语言的文法和系列的转换规则。根据文法,引擎从输入内容构造解析樹,然后应用规则到输出。 (查看原文) —— 引自章节:11.2 基于规则的翻译 281 -
11.3模型驱动的翻译 Model-driven Translation 在模型驱动翻译器中,一切都要围绕解析器构建的输入模型进行。最简的就是创建AST模型,然后一边对其进行遍历,一边对其进行输出”。它与导译器唯一的区别是在历过程中生成代码,而不是在解析过程中生 AST的优点是可以在生成输出之前进行语义分析。 (查看原文) —— 引自章节:11.3 模型驱动的翻译 283
> 全部原文摘录
喜欢读"编程语言实现模式"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"编程语言实现模式"的人也喜欢 · · · · · ·
-
- ANTLR 4权威指南 9.4
-
- 领域特定语言 8.1
-
- 编译器设计 8.4
-
- 自制编译器 8.2
-
- 程序设计语言 8.4
-
- 计算的本质 8.7
-
- Ruby原理剖析 9.3
-
- Scala程序设计(第2版) 8.4
-
- 两周自制脚本语言 8.4
-
- 七周七语言 8.1
编程语言实现模式的书评 · · · · · · ( 全部 11 条 )

帮助编写你的DSL语言应用
本书在序章中就写到了书的重心是为了帮助写一些DSL类型的语言,而不是GPPL这种复杂完整的语言,毕竟像gcc这样的编译器发展到现在已经很难再通过少量几个人去写了,复杂程度极大。本书更加注重编译前端的技巧,并没有去讲一些后端的优化。所以说这是一本cookbook式的DSL编写的书...
(展开)
> 更多书评 11篇
论坛 · · · · · ·
Pattern6 “带记忆的回溯”代码似乎是错的 | 来自corpsefire | 1 回应 | 2017-08-09 17:51:41 |
求求各位译者大大能给关键字英文注解 | 来自lilo | 2013-04-26 23:20:12 | |
《编程语言实现模式》勘误 | 来自徐定翔 | 9 回应 | 2012-12-13 16:08:58 |
ZQ吐糟式书评.... | 来自Zoom.Quiet | 4 回应 | 2012-11-27 17:15:14 |
试读样章已经上传至豆瓣. | 来自徐定翔 | 2 回应 | 2012-03-29 09:03:21 |
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- 改变自己▶编程 (Chain)
- 编程C语言,Python等类书籍+知乎话题 (IVAN)
- 程序解体诸因 (在坡华子)
- 程序员必读 (沨雅)
- 从码熊到码雄之路 (不在服务区)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于编程语言实现模式的评论:
feed: rss 2.0
0 有用 XY 2012-11-30 17:09:14
能帮助建立大局观,不会一下子掉到细节里去。也很实用,偏向于解决日常工作里碰到的语言应用相关问题。
1 有用 がお 2013-01-03 20:59:14
TP312/4229 盛名之下其实难副。书评里盛赞的大局观和实用性其实都很烂。
0 有用 erlv 2013-11-26 10:20:58
更像ANTLR的使用手册,适合用来构建编译器前端时,作为参考的书籍。
2 有用 一寸行者 2012-10-01 17:58:22
给初学者打开眼界和获取灵感
5 有用 贾里 2014-01-02 16:06:48
一本很棒的讲述编译原理的书,最重要的是,从中看到了无限的可能性。