2016-10-14 16 views
0

У меня грамматику для IRC-протокола из RFC 2812:грамматика из RFC 2812

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 (SPACE middle)» означает? А что означает "14 (SPACE middle)" означает? Спасибо заранее.

ответ

0

RFC 2812 «s Ссылки разделе перечислены RFC 2234 как спецификация дополненной BNF для синтаксиса спецификации.

Там, в разделе 3.6, мы видим:

Оператор "*" предшествующий элементу, указывает повторение. Полная форма:

<a>*<b>element 

, где <a> и <b> необязательные значения десятичные, указывает, по меньшей мере, <a> и в большинстве <b> вхождений element.

Значения по умолчанию - 0 и бесконечность, так что *<element> допускает любое число , включая ноль; 1*<element> требует по крайней мере одного; 3*3<element> позволяет точно 3 и 1*2<element> позволяет один или два.