解析しようとしているマークアップ言語について、ANTLR でパーサー生成を試してみることにしました。私はこの分野に不慣れで、何かを台無しにしています。
私の文法は
grammar Test;
DIGIT : ('0'..'9');
LETTER : ('A'..'Z');
SLASH : '/';
restriction
: ('E' ap)
| ('L' ap)
| 'N';
ap : LETTER LETTER LETTER;
car : LETTER LETTER;
fnum : DIGIT DIGIT DIGIT DIGIT? LETTER?;
flt : car fnum?;
message : 'A' (SLASH flt)? (SLASH restriction)?;
入力文字列を与えると、まさに私が望むことを行いますA/KK543/EPOS
。しかし、与えるとA/KL543/EPOS
失敗します(MismatchedTokenException(9!=5)
)。ある種の対立のようです。最初の L で生成したいrestriction
ので、言語定義で何か間違っているように見えますが、何を正しく見つけることができません。