0

ANTLR4 で文法を生成してコンパイルしました。コマンドライン経由でエラーがあるかどうかを確認できますが、このパーサーを Java プログラムに正常に統合する際に問題が発生しています。JAR を Eclipse のライブラリに追加したため、ANTLR4 メソッドを使用できますが、トークン テキストを取得したり、何らかの意味のある方法でエラーが生成されているかどうかを確認したりすることはできません。どんな助けでも大歓迎です。どうしても曖昧な場合はお知らせください。詳しく説明します。

以前のバージョンを見ると、compileUnit() のようなものと同等のメソッドが必要な場合があります。

4

1 に答える 1

1

このようなものはうまくいくはずです(あなたが文法から生成GeneratedLexerしたと仮定して):GeneratedParser

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));
    }
}

文法からそれらを事前に生成したくない場合 (または動的文法を使用している場合)は、パーサーとレクサー インタープリターを使用することもできます。

于 2013-12-31T20:23:15.963 に答える