繁体   English   中英

将ANTLR4集成到Java中

[英]Integrating ANTLR4 into Java

我已经使用ANTLR4生成并编译了语法。 通过命令行,我可以查看是否存在错误,但是在将此解析器成功集成到Java程序中遇到问题。 在Eclipse中将JAR添加到我的库后,我能够使用ANTLR4方法,但是我完全无法检索令牌文本或确定是否以任何有意义的方式生成了错误。 任何帮助,将不胜感激。 如果我有任何歧义,请让我知道,我将详细介绍。

在以前的版本中,我想要的是与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));
    }
}

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

暂无
暂无

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

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