首页 > 编程知识 正文

Antlr4 入门介绍,电子信息技术入门介绍

时间:2023-05-06 07:47:00 阅读:273461 作者:3051

Antlr4是什么?

  Antlr4是一款开源的语法分析器生成工具,能够根据语法规则文件生成对应的语法分析器。现在很多流行的应用和开源项目里都有使用,比如Hadoop、Hive以及Pig等都在使用ANTLR来做语法分析。

使用步骤 Step1:编写语法规则文件

  按照Antlr4规范编写特定语言的语法规则文件(绝大部分语言的都已提供,详见语法库);

Step2:生成解析器

  运行ANTLR工具,生成指定目标语言的解析器源码(包括词法分析器和语法分析器),如下图所示;

<Grammar>Lexer.java: 词法分析器源码;<Grammar>Parser.java: 语法分析器源码;<Grammar>Listener.java: Listener 接口;<Grammar>BaseListener.java: Listener 默认实现;<Grammar>Visitor.java: Visitor 接口;<Grammar>BaseVisitor.java: Visitor 默认实现;
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

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。