4. ABNF-определение для ABNF
Примечания:
Этот синтаксис требует сравнительно строгого форматирования правил. Следовательно, включенный в спецификацию вариант набора правил может потребовать предварительной обработки для того, чтобы он мог быть обработан анализатором (parser) ABNF.
Синтаксис использует правила, приведенные в Приложении 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 ; за исключением правых угловых ; скобок будет использоваться ; как последний шанс