1. 语言的识别与表达 ANTLR
通过 RE 描述一个网页
- 可能会崩溃——编码代价过大,且容易出错
1.1 ANTLR
ANTLR (ANother Tool for Language Recognition)
- 一个结构化文本的处理工具
- 一个语言翻译器
自动化的生成 lexer 和 parser
ANTLR 的优势
1.2 ANTLR 能够做什么
帮我们基于语法定义,自动化的生成一个 parser
- 使用自上而下的方式
如何从”文本“得到”结构化的表示“(Syntax Tree)
Parser 生成的是语法结构树,而不是抽象语法树
1.2 ANTLR 的安装
ANTLR 分为两部分:
- 工具:用于生成lexer和parser
- 运行时 (Runtime):用于支持 ANTLR 的运行
1.3 ANTLR 的使用
1.3.1 lexer 的使用
1.3.2 g4 文件的通常编写规则
- keyword 写在前面
1.3.3 语法的定义与构建
以 Java 为例
自顶向下的方法:
- 优点:具有一定的理论知识
- 适用情况:目标语言的结构清晰准确
自底向上的方法:
- 先定义最基础的元素
- 优点:从元素到结构,可以真正意义上从头到尾设计一个语言
- 适用情况:目标语言需求不是特别清晰
1.3.4 ANTLR 使用的语言定义
- 需要有一种语言用以描述”目标语言“的词法与语法特征——元语言 meta language
- 不光是 anltr,runtime 部分也需要使用 g4