2014-03-01 58 views
0

我試圖讓域名有限的語法工作。語法在http://tools.ietf.org/html/rfc1035的2.3.1節定義。它的一個子集是根據域名解析器的語法

<label> ::= <letter> [ [ <ldh-str> ] <let-dig> ] 
<ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str> 
<let-dig-hyp> ::= <let-dig> | "-" 
<let-dig> ::= <letter> | <digit> 
<letter> ::= any one of the 52 alphabetic characters A through Z in upper case and a through z in lower case 
<digit> ::= any one of the ten digits 0 through 9 

我下面的嘗試。我想匹配label

grammar Domain; 

domain: label NEWLINE; 
label: LETDIG (LETDIGHYP+ LETDIG)?; 
LETDIGHYP : (LETDIG|'-'); 
LDHSTR  : [0-9a-zA-Z-]+; 
LETDIG  : [0-9a-zA-Z]; 
NEWLINE  : [\r\n]+ ; 

不過,我得到一個line 1:0 mismatched input 'abc123' expecting LETDIG試圖對陣abc123時。我的語法有什麼問題?

謝謝

回答

0

所有這些幫助規則,如需要片段規則。查看關鍵字「antlr片段規則」,它應該可以幫到你。任何僅用於幫助其他標記且不被髮回解析器的標記都被視爲片段規則。