解析简单的ANTLR项目测试java类挂起
您好,我已经学习了Scott Stanchfield的教程ANTLR 3.x Creating and Executing a Grammar in Eclipse。然而,当我尝试运行测试类时,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;};
我运行了解释器,它似乎产生了正确的输出:
我不确定问题出在哪里,如果能提供帮助,我将不胜感激。我没有提供生成的文件,但如果有帮助,我会提供
# 1 楼答案
发现的问题:
TokenStream tokenStream = new LegacyCommonTokenStream(lexer);
应该是:
TokenStream tokenStream = new CommonTokenStream(lexer);
德普