如何在命令行中运行ANTLR 3.4?

时间:2012-11-26 17:26:49

标签: antlr3

我试过运行ANTLR 3.4 以这些方式:

java -classpath "d:\extracted\antlrworks1.4.3" org.antlr.Tool %p%\parser.g -o %p%\output
or
java -classpath "%p%lib\antlrworks-1.4.3.jar" org.antlr.Tool %p%\parser.g -o %p%\output
or
java -classpath "%p%lib\antlr-3.4.jar;%p%lib\antlr-runtime-3.4.jar;%p%lib\ST4-4.0.4.jar" org.antlr.Tool %p%\parser.g -o %p%\output

Each of them resulted in the same error message;

Message ILLEGAL_OPTION_VALUE in locale en_US not found
Message ALL_OPS_NEED_SAME_ASSOC in locale en_US not found
ANTLR installation corrupted; English messages file en.stg incomplete
Exception in thread "main" java.lang.Error: ANTLR ErrorManager panic
    at org.antlr.tool.ErrorManager.panic(ErrorManager.java:918)
    at org.antlr.tool.ErrorManager.setLocale(ErrorManager.java:427)
    at org.antlr.tool.ErrorManager.<clinit>(ErrorManager.java:390)
    at org.antlr.tool.CompositeGrammar.createNFAs(CompositeGrammar.java:379)
    at org.antlr.Tool.process(Tool.java:466)
    at org.antlr.Tool.main(Tool.java:93)

知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

我不再使用v3,除了回答一些问题。我用

$ export CLASSPATH=.:/usr/local/lib/antlr-3.4-complete-no-antlrv2.jar

一劳永逸,并用

“编译”语法
$ java org.antlr.Tool Question.g

然后编译

$ javac Question*.java Test.java

然后执行

$ java Test

精度:文件Test.java包含:

import org.antlr.runtime.*;

public class Test {
    public static void main(String[] args) throws Exception {
        ANTLRInputStream input = new ANTLRInputStream(System.in);
        QuestionLexer lexer = new QuestionLexer(input);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        QuestionParser parser = new QuestionParser(tokens);
        parser.question();
    }
}

答案 1 :(得分:0)

我知道了。 当前目录必须与罐子的位置相同。