私は次のANTLR文法を持っています:
grammar mygrammar;
ASSIGNMENT
: ID '=' INT
;
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
INT : '0'..'9'+
;
WS : ( ' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
ASSIGNMENTルールのみが実際に私のものであり、残りはANTLRWorks1.4.3によって追加されたデフォルトです。
インタプリタで文法を試してみると、「a = 5」などの文字列は成功しますが、「b [space] = [space] 6」などの文字列は失敗します。スペースが原因で、MismatchedTokenExceptionが発生します。
ANTLRのウェブサイトを読んでから、そして
ルールを無視する:WSと
{$ channel = HIDDEN}テキスト/文法規則では、空白は無視する必要があるようですが、そうではありません。
私は何が間違っているのですか?