ANTLR测试程序挂起

时间:2011-07-09 14:12:32

标签: antlr

我下载了最新版本的ANTLR(带有ANTLR 3.3的AntlrWorks 1.4.2)。

我启动了AntlrWorks UI,并输入了样本expression evaluator grammar。接下来,我从AntlrWorks UI生成代码。接下来,我选择了调试菜单选项来生成输入文件和__Test ___。java

直到现在一切都很好,但是,当我从命令行运行__Test___时,ANTLR就会挂起。我在Java代码中放了一些System.out,似乎程序挂起来自__Test___.java的以下行

ExprParser g = new ExprParser(tokens, 49100, null);

我也尝试打印令牌流,但它不会打印任何内容。

有没有人知道可能出错的地方?我试过多个语法,但得到了相同的结果。

我正在使用OpenJDK运行64位Ubuntu。

1 个答案:

答案 0 :(得分:4)

调试器创建一个套接字并等待从ANTLRWorks内部建立的连接。因此,您只能在ANTLRWorks中运行此自动生成的__Test__.java类。如果要从命令行创建测试类,请使用以下类:

import org.antlr.runtime.*;

public class Main {
  public static void main(String[] args) throws Exception {
    ExprLexer lexer = new ExprLexer(new ANTLRStringStream("4 + 5 * 6\n"));
    ExprParser parser = new ExprParser(new CommonTokenStream(lexer));
    parser.prog();
  }
}
bart@hades:~/Programming/ANTLR/Demos/Expr$ java -cp antlr-3.3.jar org.antlr.Tool Expr.g 
bart@hades:~/Programming/ANTLR/Demos/Expr$ javac -cp antlr-3.3.jar *.java
bart@hades:~/Programming/ANTLR/Demos/Expr$ java -cp .:antlr-3.3.jar Main
34
相关问题