《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出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
本书揭示了超宽带无线电技术的神秘性,提供了简单的高水平的UWB概念性讨论,进而给出了科学、数学和工程式细节的解释,并从UWB的
《好用,Excel数据处理高手》内容简介:本书由资深职场人士精心编著,深入讲解Excel强大的数据处理与分析能力,帮助读者轻松处理海
《数据分析原理:6步解决业务分析难题》内容简介:本书系统地介绍了数据如何始于业务、取于业务、用于业务。既有扎实的理论铺设,又
《地方政府的战略成长》内容简介:改革开放40年来,城市府际治理在区域经济社会发展与公共事务治理中起到了关键性推动作用。本书以
《网络与通信技术百科全书》是一本关于网络技术和通信技术的百科全书,内容涉及了到目前为止网络与通信方面的各种技术和应用。《
本书是理论计算机科学方面的优秀教材,主要介绍形式语言、自动机、可计算性和相关内容。本书特别注意定义、定理的准确性和严格性
《EOS实战与源码分析》内容简介:在区块链世界,区块链1.0时代是比特币,区块链2.0时代是以太坊,区块链3.0时代是EOS。EOS如同一个
本书是由世界级C语言专家编写的C标准库经典著作。英文版已经重印十多次,影响了几代程序员。本书结合C标准的相关部分,精辟地讲述
《淘宝美工店铺装修实战宝典》内容简介:《淘宝美工店铺装修实战宝典:Photoshop+Dreamweaver》由经验丰富的设计师编写,采用循序渐
《明朝大历史》内容简介:《明朝大历史》包括三部分。《明史简述》是吴晗在中央高级党校所作学术讲演的记录稿,扼要而系统地讲述了
深入理解LINUX内核(第三版) 内容简介 为了透彻理解Linux的工作机理,以及为何它在各种系统上能顺畅运行,你需要深入到内核的心脏。cPu与外部世界的所有交...
《超人气网站是这样建成的》通过通俗易懂的语言、趣味十足的插图和实用性的讲解,描述了运作一个成功网站所需的关键知识,涵盖了
《人机交互:以用户为中心的设计和评估(第6版)》内容简介:本书计算机系统、互联网、移动终端,带动了人类生活全面的数字化、信息
《摄影构图零基础入门教程》内容简介:构图是决定摄影作品成败的关键因素之一。本书对基本的构图常识、黄金构图的概念及实战应用、
《建筑是什么》内容简介:《建筑是什么:关于当今中国建筑的思考》对近年建筑及房地产业的业内热点问题进行评论,反思当今中国建筑
《我知道你在想什么:八卦心理学》内容简介:不灌心灵鸡汤,不堆专业名词,我们就是要剖析心理学的黑历史!马伯庸、曹天元、刘夙、
《语文课超有趣:部编本语文教材同步学(一年级·下册)》内容简介:从小学到初中,每个年级、每一篇课文都配有若干拓展阅读的文章
Google地图、Flickr、YouTube、Amazon等众多开放平台的涌现,使我们能够方便地将海量的外部Web数据灵活有序地结合起来,创建出各
《C#8.0核心技术指南(原书第8版)》内容简介:本书全方位地介绍了C#的语言特性。在内容上,它兼顾了各种类型的读者。对于初学者,
《做东:酒局里的100个生存哲学》内容简介:酒局是阴谋四伏的人性的斗争舞台,是人最高生存智慧的展示场所。《做东》是第一本最全面