對於我試圖解析的標記語言,我決定給解析器生成一個嘗試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
,所以看起來我在語言定義中做了錯誤的事情,但我無法正確地找出什麼。