《编程语言实现模式》旨在传授开发语言应用(工具)的经验和理念,帮助读者构建自己的语言应用。这里的语言应用并非特指用编译器或解释器实现编程语言,而是泛指任何处理、分析、翻译输入文件的程序,比如配置文件读取器、数据读取器、模型驱动的代码生成器、源码到源码的翻译器、源码分析工具、解释器,以及诸如此类的工具。为此,作者举例讲解已有语言应用的工作机制,拆解、归纳出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
语音处理及人机交互技术 本书特色 《语音处理及人机交互技术/智能科学技术著作丛书》是在作者张毅、刘想德、罗元多年从事服务机器人及信息无障碍技术的基础上总结所取得...
《色铅笔绘画实用教程——虫的世界》内容简介:可恶的蚊子、可怕的蟑螂、善于飞行的蜻蜓、有“大力士”之称的蚂蚁、辛勤的蜜蜂、闪
《消防安全技术综合能力考前必刷卷》内容简介:本书为备考一级注册消防工程师《消防安全技术综合能力》科目编写,共包括三套真题和
http://www.amazon.com/exec/obidos/tg/detail/-/1590598164/BookDescriptionPractica...
《治史入门》内容简介:本书是戴逸先生关于治史方法和自身学术理路发展的论述。书中从作者的经历和经验出发,介绍了从事历史研究的
《现代化语境下的民众教育与社会改造:1928-1937年北平地区民众教育馆研究》内容简介:近代社会教育是在现代化语境下兴起的救国思想
《20几岁,你为什么害怕来不及》内容简介:2015年6月,林夏萨摩,在简书上写下了一篇《你才20多岁,为什么总怕来不及》,一时间引爆
Inthelastfewyearsgametheoryhashadasubstantialimpactoncomputerscience,especiallyo...
make是unix和其他操作系统上最持久的工具之一。自1970年问世以来,make至今仍旧是大多数程序开发项目的核心工具,它甚至被用来编
风靡全球的网络隐私安全圣经高危信息生态环境的生存指南这是一部及时、生动、富有启发性的著作,可以改变人们对隐私、名声以及互
《温柔的西部》内容简介:本书是作者吴景娅对中国西部山川与风土人情的描写、歌颂;也是作者以西部人的视觉对外在世界的观察与思考
《最美中国故事(和谐篇)》内容简介:本书是“社会主义核心价值观系列连环画”中的小学十二种图书之一。小学十二种图书,每种围绕
Windows 7使用详解 本书特色 《Windows 7 使用详解》由众多Windows技术专家倾力推荐。Windows 7使用详解 内容简介 本书由微软*有...
《网络游戏场景设计与制作实战》内容简介:本书是一本系统讲解3D网络游戏场景制作的专业教材。内容上主要分为概论、软件基础操作和
微信已经成为一个独立的生态系统,带来了万众创业的全新机会,而《公众号思维》一书是作者及其团队在微信生态发展过程中大量实战
高鹏、赵培、陈庆涛编著的《3G技术问答(第二版)》从3G空中接口的四个主流标准(TD-SCDMA、WCDMA、cdma2000和WiMAX)的内容中精
Perl语言编程-(上下册)-第四版-影印版 本书特色 div>Perl语言编程-(上下册)-第四版-影印版 内容简介 本书有哪些新的内容呢?老实说几...
《绿色经济发展与政策研究文集》内容简介:本书讨论了绿色增长监测指标体系的构建、家庭消费支出变化与二氧化碳排放量之间的关系,
和声搜索算法及其在几类控制问题中的应用研究 内容简介 本书分六章, 内容包括: 第1章: 介绍了*优化问题及其发展情况、和声搜索算法的研究现状和几类控制问题。第...
PrototypeandScriptaculousarelibrariesthatextendstandardAjax.Theymakeiteasiertopr...