Электронная библиотека
Программисту веб-дизайнеру
Другие материалы
HTTP/1.1, протокол передачи гипертекста
назад | содержание | вперед
2 Письменные соглашения и обобщенная грамматика.
2.1 Увеличенная нормальная запись Бекуса-Наура (BNF).
Все механизмы, определенные этим документом, описаны как в обычной, так и в увеличенной нормальной записи Бекуса-Наура (BNF), подобной используемой в RFC 822 [9]. Разработчик должен быть знаком с такой формой записи, чтобы понять данную спецификацию. Увеличенная нормальная запись Бекуса-Наура включает следующие конструкции:
 имя = определение
 name = definition
 "литерал"
 "literal"
 правило1 | правило2
 rule1 | rule2
 (правило1 правило2)
 (rule1 rule2)
 *правило
 *rule
 [правило]
 [rule]
 N правило
 N rule
 #правило
 #rule
 ; комментарий
 ; comment
 подразумевая *LWS
 implied *LWS
Следующие правила используются в продолжение всей этой спецификации для описания основных конструкций синтаксического анализа. Кодированный набор символов US-ASCII определен в ANSI X3.4-1986 .
OCTET = <любая 8-битная последовательность данных> CHAR = <любой US-ASCII символ (октеты 0 - 127)> UPALPHA = <любой US-ASCII символ верхнего регистра "A".."Z"> LOALPHA = <любой US-ASCII символ нижнего регистра "a".."z"> ALPHA = UPALPHA | LOALPHA DIGIT = <любая US-ASCII цифра "0".."9"> CTL = <любой US-ASCII управляющий символ (октеты 0 - 31) и DEL (127)> CR = <US-ASCII CR, возврат каретки (13)> LF = <US-ASCII LF, перевод строки (10)> SP = <US-ASCII SP, пробел (32)> HT = <US-ASCII HT, метка горизонтальной табуляции (9)> <"> = <US-ASCII двойные кавычки (34)>
HTTP/1.1 определяет последовательность CR LF как метку конца строки во всех элементах протокола, за исключением тела объекта (смотрите приложение 19.3 о допустимых применениях (tolerant applications)). Метка конца строки внутри тела объекта определяется соответствыющим медиа типом, как описано в разделе 3.7.
CRLF = CR LF
HTTP/1.1 заголовки занимают несколько строк, если следующая строка начинается с пробела или метки горизонтальной табуляции. Все незаполненное пространство строки, включая переход на следующую строку, имеет ту же семантику, что и SP.
LWS = [CRLF] 1*( SP | HT )
Правило TEXT используется только для описательного содержимого поля и значений, которые не предназначены, для интерпретации синтаксическим анализатором сообщений. Слова *TEXT могут содержать символы из наборов символов (character sets), отличных от ISO 8859-1 , только когда они закодированы согласно правилам RFC 1522 .
TEXT = <любой OCTET, за исключением CTLs, но содержащий LWS>
Шестнадцатеричные цифры используются некоторыми элементами протокола.
HEX = "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT
Многие значения полей заголовка HTTP/1.1 состоят из слов, разделенных LWS или специальными символами. Эти специальные символы ДОЛЖНЫ находиться в цитируемой строке (quoted string), чтобы быть использованными в качестве значения параметра.
 token = 1*<любой CHAR за исключением CTLs или
 tspecials>
 tspecials = "(" | ")" | "<" | ">" | "@"
 | "," | ";" | ":" | "\" | <">
 | "/" | "[" | "]" | "?" | "="
 | "{" | "}" | SP | HT
В некоторые поля HTTP заголовка могут быть включены комментарии. Текст комментария окружается круглыми скобками. Комментарии допускаются только в полях, содержащих "comment" как часть определения значения поля. Во всех других полях круглые скобки рассматриваются частью значения поля.
 comment = "(" *( ctext | comment ) ")"
 ctext = <любой TEXT не включающий "(" and ")">
Строка текста анализируется как одно слово, если это цитирование, помеченное двойными кавычками.
quoted-string = ( <"> *(qdtext) <"> ) qdtext = <любой TEXT не включающий <">>
Символ наклонной черты влево ("\") может использоваться как односимвольный механизм цитирования только внутри конструкций комментария и строки цитирования (quoted-string).
quoted-pair = "\" CHAR
назад | содержание | вперед