ANTLR v4,JavaLexer和JavaParser将null作为解析树返回
发布时间:2020-12-15 00:56:25 所属栏目:Java 来源:网络整理
导读:我正在使用antlr v4来提取 java程序的解析树以用于其他目的.我从这个样本开始: ANTLR v4 visitor sample 我已经测试了给定链接上的步骤,以检查它是否有效以及一切正常: java Runa = 1+2b = a^2c = a+b*(a-1)a+b+c^ZResult: 33.0 然后我编写了自己的解析jav
我正在使用antlr v4来提取
java程序的解析树以用于其他目的.我从这个样本开始:
ANTLR v4 visitor sample
我已经测试了给定链接上的步骤,以检查它是否有效以及一切正常: java Run a = 1+2 b = a^2 c = a+b*(a-1) a+b+c ^Z Result: 33.0 然后我编写了自己的解析java程序如下面的结构: |_Java.g4 |_Java.tokens |_JavaBaseVisitor.java |_JavaLexer.java |_JavaLexer.tokens |_JavaParser.java |_JavaTreeExtractorVisitor.java |_JavaVisitor.java |_Run.java Run.java如下: import org.antlr.v4.runtime.*; import org.antlr.v4.runtime.tree.*; public class Run { public static void main(String[] args) throws Exception { CharStream input = CharStreams.fromFileName("F:ProjectsJavaNetbeansASTProjJavaTreeExtractorprog.java"); JavaLexer lexer = new JavaLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); JavaParser parser = new JavaParser(tokens); ParseTree tree = parser.getContext(); JavaTreeExtractorVisitor calcVisitor = new JavaTreeExtractorVisitor(); String result = calcVisitor.visit(tree); System.out.println("Result: " + result); } } 但是在语句ParseTree tree = parser.getContext();树对象变为null. (如果需要更多信息,请通知我). TG. 解决方法
假设您正在使用语法
here,那么您需要解析Java文件的起点
ParseTree tree = parser.compilationUnit(); (对于没有使用该语法的任何人,您需要您命名为顶级解析器规则的任何内容.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |