フォームの入力を一致させたい::
commit a1b2c3
Author: Michael <michael@test.com>
commit d3g4
Author: David <david@test.com>
これが私が書いた文法です:
grammar commit;
file : commitinfo+;
commitinfo : commitdesc authordesc;
commitdesc : 'commit' COMMITHASH NEWLINE;
authordesc : 'Author:' AUTHORNAME '<' EMAIL '>' NEWLINE;
COMMITHASH : [a-z0-9]+;
AUTHORNAME : [a-zA-Z]+;
EMAIL : [a-zA-Z0-9.@]+;
NEWLINE : '\r'?'\n';
WHITESPACE : [ \t]->skip;
上記のパーサーの問題は、上記の入力に対して完全に一致することです。しかし、入力が次のように変わると:
commit c1d2
Author: michael <michael@test.com>
次のようなエラーがスローされます。
行 2:8 AUTHORNAME を期待する入力 'michael' が一致しません。
トークンを出力すると、AUTHORNAME ではなく COMMITHASH というトークンに文字列 'michael' が一致するようです。
上記のケースを修正するにはどうすればよいですか?