0
Antlr3產生以下輸出System.out
,而其他人做正確的一切:這條ANTLR3日誌消息的含義是什麼?
line 0:0 null
line 0:0 null
line 0:0 null
...
它是什麼?
ps。問題是,在解析時,我通過RecognitionException()
。看起來像null
是這樣的結果。而不是null
應該有一些有意義的消息,但RecognitionException沒有這樣的構造函數。該怎麼辦?
grammar Bar;
document: (CHAR { Foo.validate($CHAR.text); })+ EOF;
CHAR: 'a'..'z';
Foo
類在同一包某處:
public class Foo {
public static void validate(String txt) throws RecognitionException {
if ("q".equals(txt)) {
throw new RecognitionException();
}
}
}
現在一個單元測試:
public class BarTest {
@Test public void testEverything() throws Exception {
this.parse("abc"); // valid
this.parse("abcq"); // invalid
}
private void parse(String txt) {
CharStream input = new ANTLRStringStream(txt);
BarLexer lexer = new BarLexer(input);
TokenStream tokens = new CommonTokenStream(lexer);
BarParser parser = new BarParser(tokens);
parser.document();
}
}
的輸出是:
line 0:0 null
嗯,這是相當明顯的,不是嗎? :-D(我有時會發現antlr3的信息確實可能是神祕的) – 2011-02-17 16:13:14
Nah,根本不明顯......你知道這是什麼意思嗎? – yegor256 2011-02-17 16:16:40