1. 语言的识别与表达 ANTLR

通过 RE 描述一个网页
image.png|400

  • 可能会崩溃——编码代价过大,且容易出错

1.1 ANTLR

ANTLR (ANother Tool for Language Recognition)

  • 一个结构化文本的处理工具
  • 一个语言翻译器
    自动化的生成 lexer 和 parser
ANTLR 的优势

image.png|600

1.2 ANTLR 能够做什么

帮我们基于语法定义,自动化的生成一个 parser

  • 使用自上而下的方式

如何从”文本“得到”结构化的表示“(Syntax Tree)
image.png|700

Parser 生成的是语法结构树,而不是抽象语法树

1.2 ANTLR 的安装

ANTLR 分为两部分:

  • 工具:用于生成lexer和parser
  • 运行时 (Runtime):用于支持 ANTLR 的运行
    image.png|700

1.3 ANTLR 的使用

image.png|700

1.3.1 lexer 的使用

image.png|600

1.3.2 g4 文件的通常编写规则

image.png

  • keyword 写在前面

1.3.3 语法的定义与构建

以 Java 为例

自顶向下的方法:

image.png|700

  • 优点:具有一定的理论知识
  • 适用情况:目标语言的结构清晰准确
自底向上的方法:
  • 先定义最基础的元素
    image.png|700
  • 优点:从元素到结构,可以真正意义上从头到尾设计一个语言
  • 适用情况:目标语言需求不是特别清晰

1.3.4 ANTLR 使用的语言定义

  • 需要有一种语言用以描述”目标语言“的词法与语法特征——元语言 meta language
  • 不光是 anltr,runtime 部分也需要使用 g4