1、规则的名字(name)
就是它本身(不带任何尖括号,"<",">"),后面跟个等号=,然后就是该规则的定义。如果规则需要用多个行来描述,利用空格进行缩进格式排版。某些基本的规则使用大写,如SP, LWS, HT, CRLF, DIGIT, ALPHA,等等。定义中还可以使用尖括号来帮助理解规则名的使用。
2、字面意思("literal")
文字的字面意思放在引号中间,若无特别指定,则该段文字是大小写敏感的。
3、规则1|规则2(rule1 | rule2)
"|"表示其分隔的元素是可选的,比如,"是|否"要选择‘是’或‘否’。
5、*规则(*rule)
在元素前加星号"*"表示循环,其完整形式是"<n>*<m>元素",表明元素最少产生<n>次,最多<m>次。缺省值是0到无限,例如,"1*元素"意思是至少有一个,而"1*2元素"表明允许有1个或2个。
7、N 规则(N rule)
表明循环的次数:"<n>(元素)"就是"<n>*<n>(元素)",也就是精确指出<n>取值。因而,2DIGIT 就是2位数字, 3ALPHA 就是由三个字母组成字符串。
9、;注释(; comment)
分号后面是注释,仅在单行使用。
本文的语法描述是基于单词的。除非另有指定,否则线性空格(LWS)可以在两个邻近符号或分隔符(tspecials)之间任意使用,而不会对整句的意思造成影响。在两个符号之间必须有至少一个分隔符,因为它们也要做为单独的符号来解释。实际上,应用程序在产生HTTP结构时,应当试图遵照"通常方式",因为现在的确有些实现方式在通常方式下无法正常工作。
参考资料:
1、BNF