您好我遵循了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;};
我运行解释器,它似乎产生了正确的输出:
我不确定问题是什么,并希望得到任何帮助。我没有提供生成的文件,但如果有帮助的话。
答案 0 :(得分:0)
发现问题:
TokenStream tokenStream = new LegacyCommonTokenStream(lexer);
应该是:
TokenStream tokenStream = new CommonTokenStream(lexer);
DERP