antlr java_ANTLR v4,JavaLexer和JavaParser将null作为解析树返回

我正在使用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:\\Projects\\Java\\Netbeans\\ASTProj\\JavaTreeExtractor\\prog.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.

因为我是antlr的新手,有什么建议让我检查或任何解决方案?

(如果需要更多信息,请通知我).

TG.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值