2014-03-01 57 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片段规则”,它应该可以帮到你。任何仅用于帮助其他标记且不被发回解析器的标记都被视为片段规则。