《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出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
SystemVerilog验证 本书特色 本书可以作为学习system verilog验证语言的初级阶段读物。书中描述了语言的工作原理并且包含了很多例子,这些例...
《CSS网页布局创意课》的第1部分,收录了若干网页设计权威专家所著的特写文章,其中涵盖了新的CSS3属性及针对各种屏幕大小进行设
"Writtenbythreeexpertsinthefield,DeepLearningistheonlycomprehensivebookonthesubj...
网络协议分析 本书特色 本书基于作者近10年的教学经验编写而成。书中以tcp/ip协议族中构建internet所必需的、与我们交互*直观的协议作为主题,详细讨论...
《狙击步枪大百科(图鉴版)》内容简介:《狙击步枪大百科·图鉴版/现代兵器百科图鉴系列》精选了世界各国研制的数十种经典狙击步枪
《贾伯斯傅》这本贾伯斯生前唯一授权的传记,完整记载他的一生。但这本书谈的不只是贾伯斯。人人都知道贾伯斯不遗余力捍卫隐私,
可信计算技术原理与应用 本书特色 在本书中可信计算是指系统提供的计算行为能够满足需求者对计算的期望,并且系统具有能够证明其计算可信性的能力。综合来看,可信计算平...
《图像处理、分析与机器视觉(第3版)》是为计算机专业图像处理、图像分析和机器视觉课程编写的教材。《图像处理、分析与机器视觉(
《数据与计算机通信(第7版)(影印版)》的宗旨是向读者完整地介绍数据与计算机通信这一广阔领域。作者通过书中的章节,将庞大的论题
《史记八讲》内容简介:本书稿是日本东洋文化研究所访问学者史杰鹏为所开《史记》网课撰写的讲稿的结集。分为“刺客”“游侠”“战
《刘安评传(增订本)》内容简介:《刘安平传(增订本)》是一部以思想为着重点对西汉淮南王刘安进行全面评论的专著。书中对刘安其
《走向大洋:前苏联冷战时期远洋水面作战舰艇》内容简介:前苏联远洋水面舰艇发展道路曲折而坎坷,但是在此过程中,一个陆权国家走
本书集中讨论CGI编程,以便利用目录 目录译者序前言第一部分CGI的基本知识第1章CGI介绍1.1什么是共同网关接口1.2Web上...更多>>
ThisbookisaboutthenextgenerationoftheGoogleMapsAPI.Itwillprovidethereaderwiththe...
所有伟大的设计,都是在艺术美、可靠性、安全性、易用性、成本和性能之间寻找平衡与和谐。《好用型设计》是设计学领域权威力作,
国务院发展研究中心新经济导刊中国社会科学院信息化研究中心国家信息中心信息化研究部中国互联网协会分享经济工作委员会腾讯研究
《谁说菜鸟不会数据分析(入门篇)(全彩)》是一本有趣的数据分析书!《谁说菜鸟不会数据分析(入门篇)(全彩)》基于通用的Ex
《建筑学教程2:空间与建筑师》进一步充实了《建筑学教程1:设计原理》,拥有深厚的内涵。《建筑学教程2:空间与建筑师》追溯了他近
《道德经验批判》内容简介:本书深入分析和确定了道德意识发生的普遍条件,把善、道德情感与真理认识密切联系起来,把善定义为内在
MatthewcWilson是一名软件开发顾问,STLSoft库的创建者,他为双月刊C/C++UserscJournal撰写关于将C/C++与其他语言和技术进行...