RFC 2812的语法

时间:2016-10-14 08:22:57

标签: bnf ebnf

我从RFC 2812获得了IRC协议的语法:

message    =  [ ":" prefix SPACE ] command [ params ] crlf
prefix     =  servername / ( nickname [ [ "!" user ] "@" host ] )
command    =  1*letter / 3digit
params     =  *14( SPACE middle ) [ SPACE ":" trailing ]
           =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ]

nospcrlfcl =  %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF
                ; any octet except NUL, CR, LF, " " and ":"
middle     =  nospcrlfcl *( ":" / nospcrlfcl )
trailing   =  *( ":" / " " / nospcrlfcl )

SPACE      =  %x20        ; space character
crlf       =  %x0D %x0A   ; "carriage return" "linefeed"

" 1 *字母"意思?我想一到无限次出现。 什么" * 14(空间中间)"意思? 什么是dows" 14(SPACE middle)"意思? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

RFC 2812引用部分列出了 RFC 2234 作为语法规范扩充BNF 的规范。< / p>

在3.6节,我们看到:

  

元素前面的运算符“*”表示重复。满满的      形式是:

   <a>*<b>element
     

其中<a><b>是可选的十进制值,至少表示      <a> <b>element次出现*<element>

     

默认值为0且无穷大,以便1*<element>允许任何值      数字,包括零; 3*3<element>至少需要一个;      1*2<element>只允许3和([A-z0-9À-ž\s]){2,} 允许一个或两个。