《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出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
《2020—2021年中国消费品工业发展蓝皮书(精装版)》内容简介:本书基于全球化视角,对过去一年中我国及世界主要国家消费品工业的
《大数据实践之路》内容简介:《大数据实践之路:数据中台+数据分析+产品应用》共13章,汇集了7位作者(来自多个大型互联网企业)的
ThankstoimprovedwebbrowsersupportandtheadventofHTML5,JavaScriptnowplaysamajorrol...
《Ruby编程语言》详细介绍了Ruby1.8和1.9版本各方面的内容。在对Ruby进行了简要的综述之后,《Ruby编程语言》详细介绍了以下内容
《中国式资本市场、公司治理与企业发展》内容简介:中国资本市场三十年的发展历史,既是可歌可泣、波澜壮阔的伟大历史,同时也是摸
《点茶之书:一盏宋茶的技艺与美学》内容简介:中国的茶文化“兴于唐,盛于宋”,两宋时期由于文人士大夫积极推广、参与,茶文化得
《本色朱德》内容简介:朱德的一生曲折而传奇,他参加过科举考试,加入过同盟会,投身过护国运动,留学过德国和苏联,经历了北伐战
由杜波依斯编著的《MySQL技术内幕(第4版)》介绍了MySQL的基础知识及其有别于其他数据库系统的独特功能,包括SQL的工作原理和My
人人都爱PS:中文版PHOTOSHOP CC技术教程(实例版) 本书特色 1. 配套视频讲解,手把手教您学习 本书配备了大量的同步教学视频,涵盖全书几乎所有实例...
《中信国学大典:颜氏家训》内容简介:南北朝时,《颜氏家训》问世,从此受到历代人们的推崇。宋代晁公武称《颜氏家训》:“述立身
《时尚秀场:时装画手绘技法攻略》内容简介:绘制时装效果图是时装设计过程中的一个重要环节,掌握它是从事时装设计应具备的专业素
《乘用车车身结构设计与轻量化》内容简介:本书是“汽车轻量化技术与应用系列丛书”中的一册,主要围绕车身结构设计与轻量化展开。
《物理原来很有趣:李淼的30堂物理课》内容简介:本书将精炼的物理学知识囊括进30堂通识课之中,是著名科普物理学家李淼老师的全新
《物联网与智慧城市》内容简介:本书立足城市信息化变革需求和信息技术发展推动,结合物联网与智慧城市的发展现状和技术趋势,对智
《历史的忧虑》内容简介:备受赞誉的历史学家哈鲁图尼恩研究了现代性的三个产物:“日常”“当下”和社会科学学科,如“区域研究”
《以房养老:理念与模式》内容简介:以房养老理论与建立在其上的反向抵押贷款的研究,前者是一种理念,一种横跨房地产、金融保险、
Sinceitsfoundingin1989byTerrenceSejnowski,NeuralComputationhasbecometheleadingjo...
《中国:推动金砖国家合作第二个黄金十年》内容简介:“求和平、谋发展、促合作、图共赢”,金砖国家“十年磨一剑”,一步一个脚印
PaintingtheWebisthefirstcomprehensivebookonwebgraphicstocomealonginyears,andauth...
《电子商务网页设计》内容简介:本书针对中等职业学校电子商务专业和计算机类专业的网页设计与制作的教材或参考书,共分十二个项目