antlr4环境配置
基本认识
高级语言的编译过程可以分为词法分析,语法分析,语义分析等几步。编译的第一步就是词法分析,而antlr4便是一个可用于生成词法分析器的工具。支持Java, Python等语言平台,这里选用Java。
词法分析的目的是由源程序(字符流)生成对应的记号流(tokens),也就是
源程序⟹词法分析器记号流
antlr4生成的词法分析器也不例外,同时,它可以将分析结果直接以语法树的形式表现出来。
配置过程
- Java配置:安装好JDK&JRE,添加对应的bin目录路径到环境变量中即可。
- 安装Eclipse Mars,以备将来需要
- antlr4的jar包下载后,既可以直接放入JRE的ext目录作为一个第三方扩展包使用,也可以直接添加jar包的路径到CLASSPATH,只要让java运行时可以查找到就好了。
- P.S. 参考tomcat加载jar包顺序
- 配置完后,为了方便使用,windows下通过创建
.bat
的方式,linux/maxos下可直接用alias
来达到给命令起“别名”的效果,之后输入antlr xxx.g4
即可代替输入java org.antlr.v4.Tool Expr.g4
这一串内容:
- windows: 创建
antlr4.bat
,内容java org.antlr.v4.Tool Expr.g4
,并把antlr4.bat
的路径加入环境变量。 - linux/maxos: 直接把
alias antlr4="java org.antlr.v4.Tool Expr.g4"
加入~/.bashrc
即可。 - P.S. windows下的git-bash是一个简单的bash环境,在其下配置别名时也可以使用linux/macos的方法。另外,某些linux发行版默认不加载
~/.bashrc
而只加载~/.bash_profile
,此时对应地把alias
加入~/.bash_profile
即可。
- windows: 创建
- 类似地,给
java org.antlr.v4.gui.TestRig
也创建别名grun
- windows: 创建
grun.bat
,内容java org.antlr.v4.gui.TestRig
- linux/macos: 把
alias grun="java org.antlr.v4.gui.TestRig"
加入~/.bashrc
- windows: 创建
测试
一个带四则运算的计算器文法
vim Expr.g4
grammar Expr;
prog: (expr NEWLINE)*;
expr: expr ('*'|'/') expr | expr ('+'|'-') expr | INT | '(' expr ')' ;
NEWLINE : [\t\r\n]+ ;
INT : [0-9]+ ;
编译
antlr4 Expr.g4
javac Expr*.java
运行
vim Expression.txt
100+2*34
grun Expr prog -gui Expression.txt