Antlr4是一款开源的语法分析器生成工具,能够根据语法规则文件生成对应的语法分析器。现在很多流行的应用和开源项目里都有使用,比如Hadoop、Hive以及Pig等都在使用ANTLR来做语法分析。
使用步骤 Step1:编写语法规则文件按照Antlr4规范编写特定语言的语法规则文件(绝大部分语言的都已提供,详见语法库);
Step2:生成解析器 运行ANTLR工具,生成指定目标语言的解析器源码(包括词法分析器和语法分析器),如下图所示;
Step3:解析代码
使用解析器对目标代码进行解析,示例如下:
public static void main(String[] args) throws Exception { //代码流 ANTLRInputStream input = new ANTLRInputStream("int a = 12; "); //使用词法分析器生成Token序列 Java8Lexer lexer = new Java8Lexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); //使用语法分析器将Token序列串联成AST Java8Parser parser = new Java8Parser(tokens); ParseTree tree = parser.expressionName(); //Visito模式或者Listener模式遍历AST System.out.println("Visitor:"); Java8Visitor evalByVisitor = new Java8BaseVisitor(); evalByVisitor.visit(tree); //Listener模式遍历AST System.out.println("Listener:"); ParseTreeWalker walker = new ParseTreeWalker(); Java8Listener evalByListener = new Java8BaseListener(); walker.walk(evalByListener, tree); }参考:
https://abcdabcd987.com/notes-on-antlr4/https://juejin.im/post/5a3caaf0f265da4310489081#heading-10