将ANTLR4集成到Java中



我已经用ANTLR4生成并编译了一个语法。通过命令行,我可以看到是否有错误,但是我在成功地将这个解析器集成到java程序中遇到了问题。我能够使用ANTLR4方法,因为我已经在Eclipse中将JAR添加到我的库中,但是我完全无法检索令牌文本,也无法以任何有意义的方式发现是否正在生成错误。任何帮助都会很感激。如果我有任何模棱两可的地方,请让我知道,我会深入研究更多细节。

看看以前的版本,一个类似于compilationUnit()的等效方法可能就是我想要的。

这样应该可以工作(假设您从语法中生成了GeneratedLexerGeneratedParser):

import java.io.FileInputStream;
import java.io.InputStream;
import org.antlr.v4.runtime.ANTLRInputStream;
import org.antlr.v4.runtime.CommonTokenStream;
import org.antlr.v4.runtime.tree.ParseTree;
import test.GeneratedLexer;
import test.GeneratedParser;
public class Main {
    public static void main(String[] args) throws Exception {
        String inputFile = null;
        if (args.length > 0) {
            inputFile = args[0];
        }
        InputStream is = System.in;
        if (inputFile != null) {
            is = new FileInputStream(inputFile);
        }
        ANTLRInputStream input = new ANTLRInputStream(is);
        GeneratedLexer lexer = new GeneratedLexer(input);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        GeneratedParser parser = new GeneratedParser(tokens);
        ParseTree tree = parser.startRule();
        // Do something useful with the tree (e.g. use a visitor if you generated one)
        System.out.println(tree.toStringTree(parser));
    }
}

如果你不想从你的语法(或者你有一个动态语法)中预生成它们,你也可以使用解析器和词法分析器解释器。

相关内容

  • 没有找到相关文章

最新更新