从编译器说起
编译器是将一种语言(源语言)编写的代码翻译成另一种语言(目标语言)的程序。比如GCC编译器将C和C++源代码编译成机器语言,Go语言编译器将Go语言的源代码编译成机器语言,Java编译器将Java源代码编译成字节码,当然也可以不局限在编程语言。编译的过程通常十分复杂,所以被分为了多个中间步骤进行处理,如下图所示。编译器可以手工实现,但是费时费力,也可以用生成工具实现其中的某些步骤,比较著名的前端的生成工具有Flex
、Bison
、ANTLR
等等,后端工具如LLVM
。
![7ae6d7d23b137fddec6794aec8759095.png](https://img-blog.csdnimg.cn/img_convert/7ae6d7d23b137fddec6794aec8759095.png)
ANTLR的作用
ANTLR是一个词法分析器(lexer)和语法分析器(parser)的生成工具,可以根据语法文件自动生成的解析器可以实现编译器前端的词法分析、语法分析、以及一部分语义分析的功能。
![c2ead16466c09c777107574b3d92e996.png](https://img-blog.csdnimg.cn/img_convert/c2ead16466c09c777107574b3d92e996.png)
使用ANTLR的好处在于可以快速开发解析器,生成的解析器代码称为代码生成目标(code generation targets),ANTLR支持多种语言的生成目标,目前ANTLR支持生成以下几种语言的解析器:Java、Python2、Python3、JavaScript、Go、C++、Swift、PHP、DART,更详细的资料可以看这里。
![50ee79b67713332257e615432cf08cd7.png](https://img-blog.csdnimg.cn/img_convert/50ee79b67713332257e615432cf08cd7.png)
既然用ANTLR开发解析器如此方便,那么首先我们从下载安装开始,看一下如何使用ANTLR。
下载安装ANTLR
ANTLR本身