简单的ANTLR项目测试java类挂起

时间:2014-06-13 02:41:03

标签: java parsing antlr3

您好我遵循了Scott Stanchfield的教程ANTLR 3.x Creating and Executing a Grammar in Eclipse。但是,当我尝试运行Test类时,main方法仅在第22行挂起之前到达第21行。

测试类:

public class Test {

public static void main(String[] args) throws RecognitionException {
    System.out.println("start!");
    CharStream charStream =  new ANTLRStringStream("once upon a time");
    XLLexer lexer = new XLLexer(charStream);
    TokenStream tokenStream = new LegacyCommonTokenStream(lexer);

    XLParser parser = new XLParser(tokenStream);
    System.out.println("in progress!");
    parser.rule();
    System.out.println("done!");

    }

}

和输出:

start!
in progress!

所以似乎XLParser类中的规则方法挂起。

这是我的语法文件:

grammar XL;

options {
    language = Java;
}

@header {
    package com.slmyers.ANTLR;

}

rule: IDENT+;

IDENT : 'a'..'z'+;
WS : ' '+ {$channel = HIDDEN;};

我运行解释器,它似乎产生了正确的输出:

interpreter output

我不确定问题是什么,并希望得到任何帮助。我没有提供生成的文件,但如果有帮助的话。

1 个答案:

答案 0 :(得分:0)

发现问题:

TokenStream tokenStream = new LegacyCommonTokenStream(lexer);

应该是:

TokenStream tokenStream = new CommonTokenStream(lexer);

DERP