繁体   English   中英

ANTLR的JAVA树解析器

[英]JAVA Tree parser for ANTLR

我想制作一个JAVA AST解析器,我遇到了这个非常有用的答案

因此,根据我创建所有文件的说明,使用Java.g文件生成词法分析器和解析器没有错误,但在编译* .java文件时,我在Main.java中收到错误

import org.antlr.runtime.*;
import org.antlr.runtime.tree.*;
import org.antlr.stringtemplate.*;

public class Main {
    public static void main(String[] args) throws Exception {
        JavaLexer lexer = new JavaLexer(new ANTLRFileStream("Test.java"));
        JavaParser parser = new JavaParser(new CommonTokenStream(lexer));
        CommonTree tree = (CommonTree)parser.javaSource().getTree();
        DOTTreeGenerator gen = new DOTTreeGenerator();
        StringTemplate st = gen.toDOT(tree);
        System.out.println(st);
    }
}

用于编译:

javac -cp antlr-3.4-complete.jar *.java

而错误是:

Main.java:9: error: cannot find symbol
        CommonTree tree = (CommonTree)parser.javaSource().getTree();
                                            ^
  symbol:   method javaSource()
  location: variable parser of type JavaParser
1 error

我是初学者,我真的无法找到问题。 提前致谢。

CommonTree tree = (CommonTree)parser.javaSource().getTree();

这假设您使用的Java语法的javaSourcejavaSource规则。

检查你的语法,看看是否确实如此。 如果没有,请确定正确的启动规则并使用它。 解析器的方法与语法中的规则命名相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM