次の 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 ' expected 'foo'
入力のスペースが無視されることを期待しますが、そうではありません.どういうわけか間違っていますが、表示されません... 注: SCOLON のルールを削除すると、入力のバグはなくなります。