ANTLR v4,JavaLexer和JavaParser将null作为解析树返回
发布时间:2020-05-24 09:47:41 所属栏目:Java 来源:互联网
导读:我正在使用antlr v4来提取 java程序的解析树以用于其他目的.我从这个样本开始: ANTLR v4 visitor sample 我已经测试了给定链接上的步骤,以检查它是否有效以及一切正常: java Runa = 1+2b = a^2c = a+b*(a-1)a+b+c^ZResult: 33.0 然后我编写了自己的解析java
|
我正在使用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(); (对于没有使用该语法的任何人,您需要您命名为顶级解析器规则的任何内容.) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
