объбд | упдетцбойе | чретед

2 Рйушнеооще упзмбыеойс й пвпвэеообс зтбннбфйлб.

2.1 Хчемйюеообс оптнбмшобс ъбрйуш Велхуб-Обхтб (BNF).

Чуе неибойънщ, пртедемеооще ьфйн дплхнеофпн, прйубощ лбл ч пвщюопк, фбл й ч хчемйюеоопк оптнбмшопк ъбрйуй Велхуб-Обхтб (BNF), рпдпвопк йурпмшъхенпк ч RFC 822 [9]. Тбътбвпфюйл дпмцео вщфш ъоблпн у фблпк жптнпк ъбрйуй, юфпвщ рпосфш дбооха урегйжйлбгйа. Хчемйюеообс оптнбмшобс ъбрйуш Велхуб-Обхтб члмаюбеф умедхаэйе лпоуфтхлгйй:

йнс = пртедемеойе
name = definition
Йнс ртбчймб - ьфп ртпуфп езп объчбойе (ое члмаюбаэее уйнчпмпч "<" й ">"), й пфдемсенпе пф пртедемеойс уйнчпмпн тбчеоуфчб "=". Ртпвем чбцео фпмшлп ртй чщтбчойчбойй ртпдпмцбаэйиус уфтпл, йурпмшъхенщи дмс хлбъбойс пртедемеойк ртбчйм, лпфптще ъбойнбаф впмее пдопк уфтплй. Оелпфптще пуопчоще ртбчймб, фблйе лбл SP, LWS, HT, CRLF, DIGIT, ALPHA й ф.д, ртедуфбчмеощ ч четиоен тезйуфте. Хзмпчще улпвлй йурпмшъхафус ч пртедемеойй чуслйк тбъ, лпздб йи ртйухфуфчйе пвмезюбеф йурпмшъпчбойе йнео ртбчйм.
"мйфетбм"
"literal"
Лбчщюлй плтхцбаф мйфетбмшощк фелуф. Еумй ое хуфбопчмеоп йопзп, ьфпф фелуф тезйуфтп-оеъбчйуйн.
ртбчймп1 | ртбчймп2
rule1 | rule2
Ьменеофщ, пфдемсенще рпмпупк ("|") счмсафус чбтйбофбнй. Обртйнет, "дб | оеф" ртйойнбеф ъобюеойе мйвп дб, мйвп оеф.
(ртбчймп1 ртбчймп2)
(rule1 rule2)
Ьменеофщ, члмаюеооще ч лтхзмще улпвлй пвтбвбфщчбафус лбл пдйо ьменеоф. Фблйн пвтбъпн, "(elem (foo | bar) elem)" дпрхулбеф рпумедпчбфемшопуфй мелуен "elem foo elem" й "elem bar elem".
*ртбчймп
*rule
Уйнчпм "*", ртедыеуфчхаэйк ьменеофх, хлбъщчбеф рпчфптеойе. Рпмобс жптнб - "<n>*<m>element" пъобюбеф нйойнхн <n>, нблуйнхн <m> чипцдеойк ьменеофб. Ъобюеойс рп хнпмюбойа - 0 й веулпоеюопуфш. Фблйн пвтбъпн ъбрйуш "*(element)" дпрхулбеф мавпе юйумп рпчфптеойк (ч фпн юйуме опмш); ъбрйуш "1*element" фтевхеф рп лтбкоек нете пдоп рпчфптеойе; б "1*2element" дпрхулбеф мйвп пдйо, мйвп дчб рпчфптеойс.
[ртбчймп]
[rule]
Ч лчбдтбфоще улпвлй ъблмаюбаф пргйпобмшоще ьменеофщ; "[foo bar]" ьлчйчбмеофоп "*1(foo bar)".
N ртбчймп
N rule
Фпюопе лпмйюеуфчп рпчфптеойк: "<n>(element)" ьлчйчбмеофоп "<n>*<n>(element)"; фп еуфш ртйухфуфчхеф фпюоп <n> рпчфптпч ьменеофб. Фблйн пвтбъпн 2DIGIT - опнет йъ 2 гйжт, б 3ALPHA - уфтплб йъ фтеи бмжбчйфощи уйнчпмпч.
#ртбчймп
#rule
Лпоуфтхлгйс "#" ртедобъобюеоб, рпдпвоп "*", дмс пртедемеойс урйулб ьменеофпч. Рпмобс жптнб - "<n>#<m>element" пъобюбеф нйойнхн <n>, нблуйнхн <m> чипцдеойк ьменеофб, пфдемеоощи пдопк ймй оеулпмшлйнй ъбрсфщнй (","), й, чпънпцоп, мйоекощн ртпвемпн (LWS). Ьфп пвщюоп дембеф жптнх урйулпч пюеош ртпуфпк; ртбчймп фйрб "( *LWS element *( *LWS "," *LWS element)) " нпцоп ртедуфбчйфш лбл "1#ьменеоф". Чеъде, зде йурпмшъхефус ьфб лпоуфтхлгйс, рхуфще ьменеофщ дпрхулбафус, оп ое хюйфщчбафус ртй рпдуюефе ртедуфбчмеоощи ьменеофпч. Фп еуфш лпоуфтхлгйс "(element), , (element)" дпрхулбефус, оп уюйфбафус ч оек фпмшлп дчб ьменеофб. Умедпчбфемшоп фбн, зде фтевхефус рп лтбкоек нете пдйо ьменеоф, дпмцео ртйухфуфчпчбфш рп лтбкоек нете пдйо ое рхуфпк ьменеоф. Ъобюеойс рп хнпмюбойа - 0 й веулпоеюопуфш. Фблйн пвтбъпн ъбрйуш "#(element)" дпрхулбеф мавпе юйумп рпчфптеойк (ч фпн юйуме опмш); ъбрйуш "1#element" фтевхеф рп лтбкоек нете пдопзп рпчфптб оеохмечпзп ьменеофб; б "1*2element" дпрхулбеф пдйо ймй дчб рпчфптб.
; лпннеофбтйк
; comment
Фпюлб у ъбрсфпк, рпуфбчмеообс уртбчб пф фелуфб ртбчймб, обюйобеф лпннеофбтйк, лпфптщк ртпдпмцбефус дп лпогб уфтплй. Ьфп - ртпуфпк урпупв члмаюеойс рпмеъощи рпнефпл рбтбммемшоп урегйжйлбгйсн.
рпдтбъхнечбс *LWS
implied *LWS
Зтбннбфйлб, прйубообс ьфпк урегйжйлбгйек пуопчбоб об умпчби. Ъб йулмаюеойен умхюбеч, ч лпфптщи пфнеюеоп йопе, мйоекощк ртпвем (LWS) нпцеф вщфш члмаюео нецдх мавщнй дчхнс унецощнй умпчбнй (мелуенпк ймй уфтплпк гйфйтпчбойс), й нецдх унецощнй мелуенбнй й тбъдемйфемснй (tspecials), ое йънеосс йофетртефбгйа рпмс. Нецдх мавщнй дчхнс мелуенбнй дпмцео ухэеуфчпчбфш рп лтбкоек нете пдйо тбъдемйфемш (tspecials), фбл лбл йобюе пой йофетртефйтхафус лбл пдоб мелуенб.

2.2 Пуопчоще ртбчймб.

Умедхаэйе ртбчймб йурпмшъхафус ч ртпдпмцеойе чуек ьфпк урегйжйлбгйй дмс прйубойс пуопчощи лпоуфтхлгйк уйофблуйюеулпзп бобмйъб. Лпдйтпчбоощк обвпт уйнчпмпч US-ASCII пртедемео ч ANSI X3.4-1986 [21].

          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 [22], фпмшлп лпздб пой ъблпдйтпчбощ упзмбуоп ртбчймбн RFC 1522 [14].

          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

Copyright  ©  1998 Alex Simonoff (http://www.omsk.com/Leshik/), All Rights Reserved.


объбд | упдетцбойе | чретед