我使用以下 Java 代码来实例化使用 ANTLR 生成的解析器。
package foo;
public class Test1 {
public static void main(String[] args) throws RecognitionException {
CharStream stream = new ANTLRStringStream("foo ");
BugLexer lexer = new BugLexer(stream);
CommonTokenStream tokenStream = new CommonTokenStream(lexer);
BugParser parser = new BugParser(tokenStream);
parser.specification();
}
}
我的语法:
grammar Bug;
options {
language = Java;
}
@header {
package foo;
}
@lexer::header {
package foo;
}
specification :
'foo' EOF
;
WS
: (' ' | '\t' | '\n' | '\r')+ {$channel = HIDDEN;}
;
SCOLON
: (~ ';')+
;
我得到的错误是:
line 1:0 mismatched input 'foo' Expecting 'foo'
我希望输入中的空格被忽略,但它不是.. Eclipse 中的 antlr 解释器说它很好,所以我想我的 Java 代码不知何故是错误的,但我只是没有看到它......注意:如果我删除了SCOLON的规则,那么输入就没有错误。