《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出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
《PPT炼成记》一书主要讲解的内容包括:了解真正的PPT是怎样的,懂得PPT的基本理念和操作规则,文字设计和编排,如何利用图片来突
Amongthetestsyouperformonwebapplications,securitytestingisperhapsthemostimportan...
《可塑的我》内容简介:心理学发现,当我们遇到困难时,我们是有能力表现出截然不同的性格特征的,这便是我们每个人的可塑性。一个
《餐饮中的设计》有别于家庭和工作场所,餐厅就犹如一个第三空间,是个人的避难所,更是社交聚会的好去处。在高速公路看到餐馆标
《尼康D810数码单反摄影实拍技法宝典》内容简介:本书是专门为尼康 D810 用户而写的相机操作指南与实拍技法宝典,它能够帮助读者发
《狄仁杰之恶麒麟》内容简介:巍巍盛唐,武则天欲举办祭天大典,幽州城忽闻魔兽恶麒麟肆虐,州官遭弑,百姓染血,天降噩兆的流言暗
数据驱动的金融时间序列预测模型研究 本书特色 以非线性动力学的观点看来,现代金融理论中金融系统的不确定性恰恰源于其自身就是一个受多种因素综合影响的具有开放性质的...
Theultimateguidetothecellphone,theubiquitousandindispensablepocket-sizedgadgetth...
《深入理解分布式事务》内容简介:本书的广度与深度兼备、理论与实战兼顾的分布式事务专著,它从基础知识、解决方案、原理分析、源
《Linux大棚命令百篇(上)》内容简介:《Linux大棚命令百篇(上):文件和文本篇》打破了市面上主流Linux命令书籍的写作风格,创新
《软件开发的201个原则》内容简介:本书汇总了软件工程原则。这些原则是关于软件工程的基本原理、规则或假设,不管所选的技术、工具
《中国资本市场研究报告(2019)》内容简介:本研究报告是中国人民大学金融与证券研究所(Finance and Securities,FSI)所长吴晓求
ThelargestgroupwithanunsatisfieddemandforagoodbookonHTTPistheworldwidegroupofWeb...
《收益递增:转型期中国社会的经济学原理》内容简介:本书内容出自汪丁丁教授近年为北京大学国家发展研究院开设的EMBA课程。作者认
WhilethereareseveralbooksonprogrammingforMacOSX,AdvancedMacOSXProgramming:TheBig...
《Grails权威指南》译自由Grails项目负责人GraemeKeithRocher编写的《TheDefinitiveGuidetoGrails》,着重介绍了...
《微信小程序策划与运营》内容简介:本书全面介绍了微信小程序及小程序运营各模块的具体内容。第1章重点介绍小程序到底是什么,其中
Therelationshipbetweenthebodyandelectronictechnology,extensivelytheorizedthrough...
从零进阶!-数据分析的统计基础 本书特色《从零进阶!数据分析的统计基础》共 6 章,分别讲解了数据分析的步骤和方法、描述性统计分析、抽样估计、假设检验、方差分析...
《第一推动丛书·综合系列:复杂的引擎(新版)》内容简介:本书结合信息、进化和计算对生物进化进行了阐释,证明了计算在进化中的