《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出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
C语言程序设计 本书特色 本书是关于介绍“C语言程序设计”的教学用书,全书分为12章,内容包括c语言概述,数据类型,运算符与表达式,数据的输入和输出,选择型程序...
Createhighfidelityprototypesforcomplexwebsitesandapplicationswiththeeasy-to-lear...
《新坐标大学本科电子信息类专业系列教材•微型计算机原理与接口技术》是在《计算机硬件技术基础》的基础上编著出版的“十一五”国
本书以目前第二代(2G)、第三代(3G)和第四代(4G)移动通信系统为背景,总结移动通信中共同的客观规律、基本理论和核心技术。从移动
《马化腾跑赢互联网的26个竞争策略》内容简介:腾讯17年的风雨兼程,马化腾17年的栉风沐雨,可以说是中国互联网发展的鲜活标本。《
本书通过分析9类质感表现的特点,向读者介绍了利用Illustrator进行绘画的技法。这9类质感包括传统美术作品质感、人体质感、动物质
《基石:伟大企业的协同哲学》内容简介:本书融合了具有前瞻性和战略性的世界级的企业管理模式和实践,用多元的视角深入剖析典型借
《深度学习:核心技术、工具与案例解析》内容简介:本书由微软亚洲研究院的资深AI工程师撰写,是一本面向初学者的、以实战为导向的
《思想的传承与决裂:以 “犹太人问题”为中心的考察》内容简介:在马克思早期思想演变中,青年黑格尔派是一个非常重要的思想背景和
光学与光子学技术是现代生活的中心,一直作为最重要的使能技术推动着人类文明的进步,并毋庸置疑地将在未来产生更为深远的影响。
本书共分五部分,详细介绍了shell编程技巧,各种UNIX命令及语法,还涉及了UNIX下的文字处理以及少量的系统管理问题。本书内容全面
RoR(RubyonRails)是基于动态脚本语言——Ruby语言的Web开发框架,其主要应用领域是Web应用程序的开发。使用RoR开发优势在于简便
由杜波依斯编著的《MySQL技术内幕(第4版)》介绍了MySQL的基础知识及其有别于其他数据库系统的独特功能,包括SQL的工作原理和My
本书由一个团队编写而成,这个团队的成员都是一些经验丰富且专注于JavaScript的开发者。TomHallett是一位高级Ruby和JavaScript工
本书将最有用的CSS技术汇总在一起,在介绍基本的CSS概念和最佳实践之后,讨论了核心的CSS技术,例如图像、链接、列表操纵、表单设
《巡天记》内容简介:1965年9月,在一条神秘的军用铁路线的列车上,来自同一班级的10大学毕业生,一起奔向大漠深处的神秘之地。几年
涂子沛、王涛、刘洪、刘远立、郎永淳鼎力推荐!聚首大生命产业前沿专家,解析数字医疗现状与趋势,构建全新医疗时代发展蓝图!国家
新编中文版Photoshop CS6标准教程-(含1CD) 本书特色 Photoshop是由Adobe公司开发的图形图像软件,它是一款功能强大、使用范围广泛的图...
电商、O2O、P2P、互联网金融等概念先是被疯狂追捧,在泡沫越吹越大之后便是哀鸿遍野。这本书正是解答泡沫破灭之后怎么办?自从以
《分配正义新论:人道与公平》内容简介:当今的分配正义理论主要是义务论的。这种义务论分配正义理论一方面或多或少受到康德伦理思