2013-04-08 64 views
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)+; 

現在一切工作正常,但爲什麼呢?上面的括號對我的語法做了什麼?

+1

看起來對我來說是一個bug:'ID:(LETTER SEPERATOR)(LETTER SEPERATOR)+;'和'ID:LETTER SEPERATOR(LETTER SEPERATOR)+;'應該產生相同的結果。 – 2013-04-08 18:48:10

回答

相關問題