《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出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
本书通过对JavaScript语言的分析,甄别出好的和坏的特性,从而提取出相对这门语言的整体而言具有更好的可靠性、可读性和可维护性
《广义网络空间》内容简介:本书将广义网络空间定义为赛博、物理、社会和思维融合的四维超空间,系统地介绍了广义网络空间的相关主
《基于神经网络的优化设计及应用》所提出的基于神经网络的立体正交优化设计方法是在多学科知识融合的基础上进行了创新,将试验技
机器人爱好者-第2辑 本书特色 本书是美国机器人杂志《Servo》精华内容的合集。 全书根据主题内容的相关性,进行了精选和重新组织,分为5章。 第1章介绍了机器...
《新编电信技术概论》讲述现代电信的相关概念、涉及的关键技术及工作原理。全书共分13章。第一章基本概念,介绍信号的频域分析、
《Python Django Web典型模块开发实战》内容简介:Django是基于Python编程语言的三大网站框架之一,是一门需要以实践经验来巩固和提
《EDA精品智汇馆:硬件系统工程师宝典》硬件系统设计中的常见需求,设计中需要考虑的各类概要设计及开发平台的归纳,SI的理论分析
《自由与权利:宪政的中国言说》内容简介:本书为政治学与法学耆宿张佛泉先生有关宪政与民主、自由与人权等问题之论著汇集。全书概
BookDescriptionThemodernWebisawashwithdataandservicesjustwaitingtobeused,buthowd...
《VisualC#2005从入门到精通/微软技术丛书》:微软技术丛书系列之一,建议一读!MicrosoftVisualC#功能强大、使用简单。本书全面介
MATLAB 优化算法案例分析与应用 本书特色 本书全面而系统地介绍了matlab算法和案例应用,涉及面广,从基本操作到高级算法应用,几乎涵盖matlab算法的...
《云端架构:基于云平台的41种可复用的架构最佳实践》内容简介:云计算发展多年,应用领域变得越来越广泛,通过整理云计算解决方案
语义网技术体系 本书特色 《语义网技术体系》简要回顾万维网的发展历史及体系结构,系统介绍语义网的基本理念及技术体系,包括 rdf数据、web本体、语义网推理技术...
《周有光传》内容简介:《汉语拼音之父:周有光传》主要内容简介::半个世纪前,他从经济学教授变身语言文字学家。花三年时间倾力打磨
本书是著名的网络服务供应商Hatena和Klab有限公司的工程师团队的经验总结。全书从实际的生产环境出发,就大规模、高性能、不间断
《摄影的核心:提升影像表现力的27个关键问题》内容简介:本书是一本鼓励摄影师更有自我意识、更有创造性思维的实用的摄影图书。书
《重塑》内容简介:本书主要围绕新基建驱动的数字经济发展现状、亮点与细节,聚焦政府、企业及社会组织三大主体的角色、行为与价值
《世界大学生程序设计竞赛(ACM/ICPC)高级教程(第1册):程序设计中常用的计算思维方式》主要介绍了大赛程序设计中的常用思维方式,
瓦片颗粒和板型颗粒有什么区别?搭建墙壁时用堆叠法为什么不好?你怎样搭建乐高马赛克,怎样用不同的比例搭建?所有问题你都可以
《分布式系统与一致性》内容简介:一致性是非常重要的分布式技术。众所周知,分布式系统有很多特性,如可用性、可靠性等,这些特性