第一部分ANTLR和计算机语言简介 3
第1章 初识ANTLR 3
1.1安装ANTLR 3
1.2运行ANTLR并测试识别程序 5
第2章 纵观全局 9
2.1从ANTLR元语言开始 9
2.2实现一个语法分析器 11
2.3你再也不能往核反应堆多加水了 13
2.4使用语法分析树来构建语言类应用程序 15
2.5语法分析树监听器和访问器 17
第3章 入门的ANTLR项目 20
3.1 ANTLR工具、运行库以及自动生成的代码 21
3.2测试生成的语法分析器 23
3.3将生成的语法分析器与Java程序集成 25
3.4构建一个语言类应用程序 26
第4章 快速指南 29
4.1匹配算术表达式的语言 30
4.2利用访问器构建一个计算器 35
4.3利用监听器构建一个翻译程序 38
4.4定制语法分析过程 41
4.5神奇的词法分析特性 45
第二部分 使用ANTLR语法开发语言类应用程序 53
第5章 设计语法 53
5.1从编程语言的范例代码中提取语法 54
5.2以现有的语法规范为指南 56
5.3使用ANTLR语法识别常见的语言模式 56
5.4处理优先级、左递归和结合性 62
5.5识别常见的词法结构 66
5.6划定词法分析器和语法分析器的界线 71
第6章 探索真实的语法世界 74
6.1解析CSV文件 75
6.2解析JSON 77
6.3解析DOT语言 83
6.4解析Cymbol语言 88
6.5解析R语言 91
第7章 将语法和程序的逻辑代码解耦 98
7.1从内嵌动作到监听器的演进 99
7.2使用语法分析树监听器编写程序 100
7.3使用访问器编写程序 103
7.4标记备选分支以获取精确的事件方法 105
7.5在事件方法中共享信息 107
第8章 构建真实的语言类应用程序 114
8.1加载CSV数据 114
8.2将JSON翻译成XML 117
8.3生成调用图 121
8.4验证程序中符号的使用 124
第三部分 高级特性 133
第9章 错误报告与恢复 133
9.1错误处理入门 133
9.2修改和转发ANTLR的错误消息 137
9.3自动错误恢复机制 141
9.4勘误备选分支 152
9.5修改ANTLR的错误处理策略 152
第10章 属性和动作 156
10.1使用带动作的语法编写一个计算器 157
10.2访问词法符号和规则的属性 162
10.3识别关键字不固定的语言 165
第11章 使用语义判定修改语法分析过程 168
11.1识别编程语言的多种方言 169
11.2关闭词法符号 172
11.3识别歧义性文本 174
第12章 掌握词法分析的“黑魔法” 180
12.1将词法符号送入不同通道 181
12.2上下文相关的词法问题 184
12.3字符流中的孤岛 194
12.4对XML进行语法分析和词法分析 198
第四部分ANTLR参考文档 209
第13章 探究运行时API 209
13.1包结构概览 209
13.2识别器 210
13.3输入字符流和词法符号流 212
13.4词法符号和词法符号工厂 213
13.5语法分析树 215
13.6错误监听器和监听策略 216
13.7提高语法分析器的速度 217
13.8无缓冲的字符流和词法符号流 217
13.9修改ANTLR的代码生成机制 219
第14章 移除直接左递归 221
14.1直接左递归备选分支模式 222
14.2左递归规则转换 223
第15章 语法参考 226
15.1语法词汇表 226
15.2语法结构 229
15.3文法规则 232
15.4动作和属性 241
15.5词法规则 246
15.6通配符与非贪婪子规则 250
15.7语义判定 253
15.8选项 257
15.9 ANTLR命令行参数 259
参考文献 263