RFC: 5234
Оригинал: Augmented BNF for Syntax Specifications: ABNF
Предыдущие версии: RFC 2234, RFC 4234
Категория: Стандарт Интернета
Дата публикации:
Авторы: ,
Перевод: Николай Малых

RFC 5234, Страница 9 из 11

4. ABNF-определение для ABNF

Примечания:

  1. Этот синтаксис требует сравнительно строгого форматирования правил. Следовательно, включенный в спецификацию вариант набора правил может потребовать предварительной обработки для того, чтобы он мог быть обработан анализатором (parser) ABNF.

  2. Синтаксис использует правила, приведенные в Приложении B.

    rulelist       =  1*( rule / (*c-wsp c-nl) )
    
    rule           =  rulename defined-as elements c-nl
                           ; продолжение, если следующая
                           ; строка начинается с пробела
    
    rulename       =  ALPHA *(ALPHA / DIGIT / "-")
    
    defined-as     =  *c-wsp ("=" / "=/") *c-wsp
                           ; определение базовых правил
                           ; и дополнительных вариантов
    
    elements       =  alternation *c-wsp
    
    c-wsp          =  WSP / (c-nl WSP)
    
    c-nl           =  comment / CRLF
                           ; комментарий или новая строка
    
    comment        =  ";" *(WSP / VCHAR) CRLF
    
    alternation    =  concatenation
                      *(*c-wsp "/" *c-wsp concatenation)
    
    concatenation  =  repetition *(1*c-wsp repetition)
    
    repetition     =  [repeat] element
    
    repeat         =  1*DIGIT / (*DIGIT "*" *DIGIT)
    
    element        =  rulename / group / option /
                      char-val / num-val / prose-val
    
    group          =  "(" *c-wsp alternation *c-wsp ")"
    
    option         =  "[" *c-wsp alternation *c-wsp "]"
    
    char-val       =  DQUOTE *(%x20-21 / %x23-7E) DQUOTE
                           ; заключенная в кавычки строка
                           ; SP и VCHAR без DQUOTE
    
    num-val        =  "%" (bin-val / dec-val / hex-val)
    
    bin-val        =  "b" 1*BIT
                      [ 1*("." 1*BIT) / ("-" 1*BIT) ]
                           ; последовательность объединенных
                           ; (concatenated) битовых значений
                           ; или один диапазон ONEOF
    
    dec-val        =  "d" 1*DIGIT
                      [ 1*("." 1*DIGIT) / ("-" 1*DIGIT) ]
    
    hex-val        =  "x" 1*HEXDIG
                      [ 1*("." 1*HEXDIG) / ("-" 1*HEXDIG) ]
    
    prose-val      =  "<" *(%x20-3D / %x3F-7E) ">"
                           ; заключенная в угловые скобки
                           ; последовательность SP и VCHAR
                           ; за исключением правых угловых
                           ; скобок будет использоваться
                           ; как последний шанс
2007 - 2017 © Русские переводы RFC, IETF, ISOC.