HTTP协议: BNF范式

BNF范式简析:

1. BNF范式结构:

a. 命名规则
name = definition
以=字符分开

b. 标题
literal用引号包住,默认小写
eg: "hello"

c. rule1 | rule2
分隔符,说明多规则的或关系
eg: yes | no

d. (rule1 rule2)
用()包住的无素集作为一个元素
eg: "(elem1 (foo | bar) elem3)", (foo | bar)是elem2

e. *rule
*为rule要反复出现的次数
eg: 10elem, elem至少反复出现10次

f. [rule]
[]说明rule是可选的, 即[rule]=0*1rule

g. N rule
N说明rule反复出现N次,且仅N次
N rule = N*Nrule

h. #rule
#rule与*rule类似

i. ;comment
;说明开始注释一行

2. 词法与语法元素及范式
token          = 1*<any CHAR except CTLs or separators>
separators     = "(" | ")" | "<" | ">" | "@"
               | "," | ";" | ":" | "\" | <">
               | "/" | "[" | "]" | "?" | "="
               | "{" | "}" | SP | HT

OCTET          = <any 8-bit sequence of data>
CHAR           = <any US-ASCII character (octets 0 - 127)>
UPALPHA        = <any US-ASCII uppercase letter "A".."Z">
LOALPHA        = <any US-ASCII lowercase letter "a".."z">
ALPHA          = UPALPHA | LOALPHA
DIGIT          = <any US-ASCII digit "0".."9">
CTL            = <any US-ASCII control character
                        (octets 0 - 31) and DEL (127)>
CR             = <US-ASCII CR, carriage return (13)>
LF             = <US-ASCII LF, linefeed (10)>
SP             = <US-ASCII SP, space (32)>
HT             = <US-ASCII HT, horizontal-tab (9)>
<">            = <US-ASCII double-quote mark (34)>

CRLF           = CR LF
LWS            = [CRLF] 1*( SP | HT )
TEXT           = <any OCTET except CTLs,
                        but including LWS>
HEX            = "A" | "B" | "C" | "D" | "E" | "F"
                      | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT

comment        = "(" *( ctext | quoted-pair | comment ) ")"
ctext          = <any TEXT excluding "(" and ")">
quoted-string  = ( <"> *(qdtext | quoted-pair ) <"> )
qdtext         = <any TEXT except <">>
quoted-pair    = "\" CHAR

 这样就可简单的实现HTTP1.1解析器的词法分析与语法预处理功能。

 

From File:  RFC2616.txt

2.1 Augmented BNF

2.2 Basic Rules

 

mars

2012.05.08

If you have more info to communicate with me for this article, please feel free to

Q-me:270982354 or E-me: mars.fu@foxmail.com. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值