1
假設以下語法:Lexer規則中沒有量詞的括號是什麼?
grammar Demo;
start: START_BLOCK SEPERATOR;
START_BLOCK: '-.-.-';
ID: (LETTER SEPERATOR) (LETTER SEPERATOR)+;
fragment LETTER: L_A|L_K;
fragment L_A: '.-';
fragment L_K: '-.-';
SEPERATOR: '!';
我通過下面的輸入語法:-.-.-!
我期望ANTLR識別標記START_BLOCK和分隔符。但相反,它找到了一個類型爲ID
的令牌。
我想,我可以通過在詞法規則「ID」除去第一夫婦括號解決這個問題:
ID: LETTER SEPERATOR (LETTER SEPERATOR)+;
現在一切工作正常,但爲什麼呢?上面的括號對我的語法做了什麼?
看起來對我來說是一個bug:'ID:(LETTER SEPERATOR)(LETTER SEPERATOR)+;'和'ID:LETTER SEPERATOR(LETTER SEPERATOR)+;'應該產生相同的結果。 – 2013-04-08 18:48:10