《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出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
本书为21世纪高等学校规划教材。本书共有八章,主要介绍微机继电保护的基本构成原理和实现技术,包括数字信号滤波处理,微机保护
《前世的秘密》内容简介:《前世的秘密》为美国灵性大师泰德·安德鲁斯绝世力作,全球范围内探讨“前世今生”话题最重要的作品。作
本书是一本关于第三代移动通信空中接口与无线工程方面的技术专著。全书内容共17章,第1章至第3章,简要地介绍了UMTS系统的技术规
《颜真卿行书三稿》内容简介:颜真卿行草书对后世影响之大,几乎能与”二王”比肩。将篆隶笔法应用于行草,颜真卿于二王潇散简远、
电脑组装与维护全攻略 内容简介 当前电脑市场中,品牌电脑虽然提供了多款机型,但并不能切实满足用户的实际需求,更有许多品牌电脑的配置并不合适。如果拥有DIY的相关...
《香料在丝绸的路上浮香》内容简介:尚书郎在朝堂上含的“口香糖”鸡舌香,故乡远在太平洋中央的热带火山岛;印度佛教仪式中熏燃的
MS Office真题演练与实战-全国计算机二级等级考试辅导教程 本书特色 培养应用型人才是近年来各高校、大专、中职、中专、技校培养学生的重要目标。本着教学与社...
本书描述了一种恰如其分的软件架构设计方法。作者建议根据项目面临的风险来调整架构设计的成本,并从多个视角阐述了软件架构的建
《中国哲学通史(先秦卷)》内容简介:哲学在中国作为一个独立自觉的学科创立以来,已历百年,本书力图揭示中国哲学之不同于西方哲
《体验营销(修订版)》:商家赢利新法宝,销售的革命!今天,运用体验营销开展商业竞争已成为商家赢利的法宝。体验营销是个新概念
中文版Dreamweaver+Flash+Photoshop网页制作从入门到精通-CS5版-随书附赠光盘 本书特色 16大核心技术精解本书体系结构完整,由浅入深...
《构建高质量软件》内容简介:本书包含四大部分,共10章。一部分(1~4章)主要围绕如何提高软件的开发质量和效率展开,详细讲述了
联邦学习 本书特色 如何在保证本地训练数据不公开的前提下,实现多个数据拥有者协同训练一个共享的机器学习模型?传统的机器学习方法需要将所有的数据集中到一个地方(例...
ScalahasestablisheditselfasaviablealternativetoJava,andpowerfulnewtoolsmakeiteas...
《一小时漫画基金实战法》内容简介:基金投资是非常适合普通人的一种投资方式,但在投资之前,我们先要搞懂基金是什么、基金是怎么
《我是90后,我是创业家》内容简介:第1本揭秘17个90后精彩创业故事。他们是:脸萌创始人郭列、北大硕士卖米粉的张天一、微博《我只
《区块链核心算法解析》内容简介:《区块链核心算法解析》介绍了构建容错的分布式系统所需的基础技术,以及一系列允许容错的协议和
《高性能响应式Web开发实战》内容简介:响应式Web设计的理念是让页面根据用户行为以及设备环境(屏幕尺寸、分辨率等)进行相应的响
《乾隆:政治、爱情与性格》内容简介:中国历史最复杂的皇帝的政治、后宫与人生。读懂了这个人,你就读懂了中国历史,读懂了中国政
《PHP+MySQL程序设计实例讲座》以深入浅出的讲解引导您熟悉PHP的语法,针对文件访问、GD绘图与图片处理、表单、Cookie、Session、