1、IDEA安装Antlr4插件
2、添加Antlr依赖
<dependencies>
<!-- antlr运行依赖 -->
<dependency>
<groupId>org.antlr</groupId>
<artifactId>antlr4-runtime</artifactId>
<version>4.9.1</version>
</dependency>
</dependencies>
3、创建ANTLR4 语法描述文件:Math.g4
grammar Math;
prog : stat+;
stat: expr NEWLINE # printExpr
| ID '=' expr NEWLINE # assign
| NEWLINE # blank
;
expr: expr op=('*'|'/') expr # MulDiv
| expr op=('+'|'-') expr # AddSub
| INT # int
| ID # id
| '(' expr ')' # parens
;
MUL : '*' ; // assigns token name to '*' used above in grammar
DIV : '/' ;
ADD : '+' ;
SUB : '-' ;
ID : [a-zA-Z]+ ;
INT : [0-9]+ ;
NEWLINE:'\r'? '\n' ;
WS : [ \t]+ -> skip;
4、右键Math.g4,点击Configure ANTLR…,选择output directory(生成相关的java代码的文件输出位置)
5、右键Math.g4,点击Configure ANTLR Recognizer。生成相关的java代码
6、创建一个MathVistor继承刚才自动生成的MathBaseVisitor,实现各种Visitor方法
import org.antlr.v4.runtime.*;
import org.antlr.v4.runtime.tree.ParseTree;
import java.util.HashMap;
import java.util.Map;
public class MathVistor extends MathBaseVisitor<Integer>
{
private static Map<String,Integer> assignMap = new HashMap<>();
@Override
public