簡體   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