乐者为王

Do one thing, and do it well.

ANTLR 4权威参考读书笔记(1)

  • grammar 语法,一种形式化(formal)的语言描述。
  • syntax 句法
  • phrase 短语
  • lexer 词法分析器
  • parser 语法分析器
  • parse tree 语法分析树,表示语法如何匹配输入的数据结构。
  • tree walker 树遍历器
  • top-down 自顶向下
  • listener 监听器
  • visitor 访问者
  • backtracking 回溯
  • semantic predicates 语义谓词

ANTLR v4是一款强大的语法分析器生成器,可以用来读取,处理,执行和转换结构化文本或二进制文件。通过语法文件,ANTLR可以自动生成词法分析器、语法分析树和树遍历器。

ANTLR v4的语法分析器使用一种新的分析技术称之为Adaptive LL(*)ALL(*),是v3 LL(*)的扩展,它可以在生成的语法分析器执行前在运行时动态地执行语法分析而不是静态地。

ANTLR v4极大地简化了用来匹配像算术表达式语法结构的语法规则。对于传统的自顶向下的语法分析器生成器像ANTLR v3,识别表达式的最自然的语法是无效的,v4则不然。ANTLR v4会自动地重写左递归规则为非左递归等价物,唯一的约束是左递归必须是直接的——规则立刻引用它自身。

此前,ANTLR v3用户必须用树构造操作来增强语法。现在,ANTLR v4会自动构建语法分析树,也会以监听器和访问者模式实现的形式自动生成树遍历器。所以,你不再需要构建树语法,可以用访问者模式代替。降低在语法中嵌入动作的重要性使得甚至可以在不重新编译生成的语法分析器的情况下在不同的应用中复用相同的语法。

ANTLR v3的LL(*)分析策略弱于v4的ALL(*),因此v3有时候需要依赖回溯去正确地分析输入的短语。回溯使得很难去通过生成的语法分析器步进调试语法,因为语法分析器可能会分析相同的输入多次(递归地);回溯也让语法分析器在无效的输入之上给出一个好的错误消息更难。

这本书里有什么?

免费在线文档提供了足够的资料用于学习基本的语法和语义,但没有详细地解释ANTLR的概念。只有这本书解释了如何识别语言的语法模式,以及如何用ANTLR语法表示它们。这本书也将帮助你充分的了解ANTLR,是成为高级用户的必读物。

这本书被组织成四个部分。

  • 第一部分介绍ANTLR,提供一些语言的背景知识,带你开始一场ANTLR功能之旅,让你尝下语法的滋味和能用它做什么。
  • 第二部分是关于使用ANTLR语法结合树遍历器设计语法和构建语言应用。
  • 第三部分首先展示了如何定制ANTLR生成的语法分析器的错误处理。接下来,你将学习如何在语法中嵌入动作,因为有时候这样做比构建语法分析树然后遍历它更简单有效。关于动作,你还将学习使用语义谓词更改语法分析器的行为去处理一些具有挑战性的识别问题。最后一章解决一些具有挑战性的语言识别问题,例如识别XML和Python中上下文相关的换行符。
  • 第四部分是参考章节,列出了所有关于使用ANTLR语法元语言和它的运行库的规则。

Comments