一:ANTLR的介绍
-
简介:
Antlr4是ANother Tool for Language
Recognition即另一个语言识别工具,官方介绍为Antlr4是一款强大的解析器生成工具,可用来读取、处理、执行和翻译结构化文本或二进制文件。Antlr4生成的解析器包含了词法分析程序和语法分析程序(就是编译原理课程中的词法分析和语法分析)。
词法分析器 (Lexer) :词法分析是指在计算机科学中,将字符序列(输入信息)转换为单词(Token)的过程。执行词法分析的程序便称为词法分析器。词法分析器(Lexer)一般是用来供语法解析器(Parser)调用的。
1.1:基础概念
语法分析器:语法解析器 (Parser) 语法解析器通常作为编译器或解释器出现。它的作用是进行语法检查,并构建由输入单词(Token)组成的数据结构(即抽象语法树)。语法解析器通常使用词法分析器(Lexer)从输入字符流中分离出一个个的单词(Token),并将单词(Token)流作为其输入。实际开发中,语法解析器可以手工编写,也可以使用工具自动生成。抽象语法树 (Abstract Syntax Tree,AST) 抽象语法树是源代码结构的一种抽象表示,它以树的形状表示语言的语法结构。抽象语法树一般可以用来进行代码语法的检查,代码风格的检查,代码的格式化,代码的高亮,代码的错误提示以及代码的自动补全等等
-
工作流程:
词法分析程序是将输入的代码字符序列转换成标记(Token)序列的程序,而语法分析程序则是将标记序列转换成语法树的程序。好在按照Antlr4规范制定了语法定义,Antlr4就可以为我们生成解析器源码。 -
:目前应用场景:Hive,Spark,Oracle,Elasticsearch
-
同类工具:Javacc,SqlParser
二:安装使用
2.1:关于Antlr4的安装和使用,大家可以参照Github上的Getting Started with ANTLR v4,这里不作介绍。
2.2使用 ANTLR v4,一般分为三步:
1:按照 ANTLR v4 的编写待解析语言的语法定义文件,主流语言的 ANTLR v4 语法定义可以找仓库antlr/grammars-v4中找到,一般以g4为语法定义文件后缀
2:运行 ANTLR 工具,生成指定目标语言的解析器源代码
3:使用生成的解析器完成代码的解析等.