《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出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
《恐龙世界探险日记(神奇科学探险之旅)》内容简介:《恐龙世界探险日记》是“神奇科学探险之旅”丛书之一,本书选取了恐龙大家族
《精通ROS机器人编程(原书第2版)》内容简介:本书主要面向机器人开发人员和想充分利用ROS功能的研究人员,是一本侧重ROS框架高级
《温柔的西部》内容简介:本书是作者吴景娅对中国西部山川与风土人情的描写、歌颂;也是作者以西部人的视觉对外在世界的观察与思考
《书坊寻踪:私家古旧书店之旅(精)》内容简介:本书为“芷兰斋书店寻访三部曲”之《书坊寻踪:私家古旧书店之旅》,汇集了韦力先
建筑是知性和理性的产物,完全承受着人们经年累月活动在其中,所以对于房间的布局必须仔细考虑,任何细节也不能放过。建筑是感性
《女性家庭健身基础:全彩图解版》内容简介:女性家庭健身基础为女性健身者,尤其是希望在家健身的女性提供了健身所需的基础知识和
《机器人操作系统ROS原理与应用》内容简介:本书主要分析ROS的核心功能实现原理,探讨基于ROS的智能机器人软件系统优化开发方法与实
《科学的极致:漫谈人工智能》内容简介:集智俱乐部是一个从事学术研究、享受科学乐趣的探索者组成的团体,倡导以平等开放的态度、
《跨终端Web》内容简介:移动互联网不可阻挡地进入了我们的生活。作者将自己在百度和天猫期间的跨终端Web的开发实践转化为书中的技
《异质性的对话》内容简介:本书基于对“独立动画”的一般界定而展开,分析独立动画如何通过媒介实验与多层面批判确立自身,一方面
《从零开始:UI图标设计与制作》内容简介:本书分为10章,结合实例展示操作方法与处理效果,全面系统地阐述了UI设计理念、创作过程
本书是美国艺术与设计专业品牌教材,是关于字体设计应用的基础知识的基础读物,同时具有一般广泛性,从字体设计的宏观到微观,都
《一部手机玩转移动理财》内容简介:现在,手机已成为每个人生活中必不可少的伴侣,几乎24 小时不离身,而将来,手机将成为每个人进
《爱的24则运算》内容简介:曾经做我最爱的人/你是否觉得荣耀光彩 这是一场无论如何都会结束的爱情 你是那种无论如何都应该跟你爱
本书以通信系统及其发展为线索,系统、深入地介绍了通信技术的基本原理及其应用,着重论述了数字通信原理,但对模拟通信也进行了
《你见过我的妈妈吗?:穿山甲松果的故事》内容简介:本书为国际爱护动物基金会(FAW)“希望的家园系列”从书之一,从中华穿山甲“
Rhinoceros Grasshopper 参数化建模(曾旭东) 本书特色 参数化建模技术在辅助建筑设计上的应用越来越广泛,其发展时间短暂,发展速度却令人叹为...
《公案中的世态》内容简介:公案小说是中国古典小说的一种,由宋话本公案类演义而成,盛行于明清。本书对公案小说进行了较为全面、
本书详细地讲解了JavaScript编程所用到的基本知识和常用技术。全书分为三大部分。第1、2章是JavaScript的简介和在HTML中用JavaSc
《阿里巴巴与四十大道》内容简介:本书是一本阿里巴巴小二写阿里巴巴公司的书,全书40章,汲取于阿里巴巴公司内部日常生活的点点滴