gpt4 book ai didi

用于 ANTLR 的 JAVA 树解析器

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:48:20 25 4
gpt4 key购买 nike

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

因此,按照说明,我创建了所有文件,使用 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 树 = (CommonTree)parser.javaSource().getTree();

这假定您正在使用的 Java 语法的起点是 javaSource 规则。

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

关于用于 ANTLR 的 JAVA 树解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48272932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com