《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出31种易于理解且常用的设计模式(每种都包括通用数据结构、算法、策略)。虽然示例是用Java编写的,但相信读者可以触类旁通,利用这些设计模式构建针对其他编程语言(既包括特定领域语言,也包括通用编程语言)的应用。
第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
本书讲述如何用Python框架Django构建出强大的Web解决方案,本书讲解了使用新的Django1.0版的各种主要特性所需要的技术、工具以及
《投资大白话》内容简介:一本让股市小白看得懂的书,一本值得投资老手重视的书。用人人都听得懂的话阐明股市投资的真谛,让人人都
《快乐心理学》内容简介:快乐一直被定义为:行为的后效。大部分人谈起自己快乐与否,几乎都是在说明他的需求是否「被满足」。世世
《PyTorch深度学习实战》内容简介:本书帮助读者快速深入深度学习。在过去的几年里,我们看到深度学习成了新的动力。它从学术界一路
《互联网法律实务指南》内容简介:本书是由浙江省律师协会组织全省互联网专业律师编写的实用型书籍,内容涉及互联网准入和运营、电
《浮世绘百景》内容简介:◎云集16位浮世绘巨匠,包括葛饰北斋、歌川广重、河锅晓斋、小林清亲等,从江户时代跨越到明治时代,一窥
《未来已来》内容简介:本书是全球政治、经济、金融、企业等方面的领袖人物在清华大学五道口金融学院和国家金融研究院主办的“未来
《新概念编程C语言篇习题解答》对《新概念编程C语言篇》教材中的习题进行了系统全面的分析和解答。习题精选了C语言编程中典型题型
《Ajax高级程序设计(第2版)》是Ajax领域的名著,详细讲解了帧、JavaScript、cookie、XML和XHR如何与Ajax相关,以及具体的Ajax技...
《全国计算机等级考试教程:二级MS Office高级应用》内容简介:本书依据教育部考试中心最新发布的《全国计算机等级考试大纲》以及作
《中论讲记》内容简介:《中论》,又称《中观论》或《正观论》,与《百论》《十二门论》合称三论宗据以立宗的“三论”,撰成时间约
《SAS技术内幕》内容简介:本书共27章,分为上下两卷:上卷介绍SAS编程基础与使用方法,是广大程序员快速掌握SAS编程技术的简明开发
本书由ACE的几位核心开发者撰写,快速而直接地解释了怎样充分利用ACE。从介绍ACE开始,循序渐进,详细讨论了ACE的IPC设施、进程及
商业数据流挖掘模型.方法及应用 本书特色 本书是商业数据流挖掘方面的一本学术专著,包括商业数据流数据管理模型、概念漂移模型、商业数据流关联规则、分类、聚类方法,...
"GISforSustainableDevelopment"examineshowGISapplicationscanimprovecollaborationi...
《行摄!肯尼亚!》内容简介:《行摄!肯尼亚!》以作者的亲历行程为主线,介绍了肯尼亚各地区的风土人情、野生动物、自然风光,并
《真实经济:消费者真正渴望的是什么》内容简介:在体验经济占主导的21世纪.真实性取代质量成为新的消费者敏感性,就像当初质量取
你以前玩过一些触摸屏游戏,关于游戏,你肯定有过自己的点子吧!接下来怎么做?把这个想法变为现实吧!这本《触摸屏游戏设计》里
《杭州啊杭州》内容简介:本书收录了丰子恺、巴金、余秋雨等作者的散文集,这25篇文章,篇篇都是难得的美文。其中,丰子恺、夏衍、
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python可以用于很多的领域,从科学计算到游戏开发。《Python编