Augentmented BNF (Backus-Naur Form) 增长巴克斯范式
name = definition
name是单纯的一个name,不包括”<" ,“>",由”=“号同后面的定义隔开。White space只在连续几行中的间隔中才有意义,用来表示一个规则的定义占了好几行。某些基本规则是用大写字母表示的,例如SP,LWS,HT,CRLF,DIGIT,ALPHA等。Angle brackets(尖括号)能促进区分规则名的时候才会在定义中使用。
"literal"
除非特别声明,否则双引号中的文本是大小写不敏感的。
rule1 | rule2
由 "|"符号隔开的元素表明是可选的。例如 "yes|no"表示 接受yes 或者no。
(rule1 rule2)
由"("")"括起来的元素,表明是一个单一的元素。
*rule
元素的前导符号”*“表示重复。 完全形式是 ”<n>*<m>element",表示element出现最小n 最多m次。默认情况下,即×rule表示最少0次最多无穷多次。
[rule]
由方括号(square brackets)括起来的元素表示该元素是可选的。例如 “[foo bar]" 和 ”×1(foo bar)“是一样的。
N rule
指定重复次数N次。同”n*n elements“.
#rule
类似"*",完全定义是”<n>#<m>element“表示最少n最多m个element元素,每一个元素都由一个或者多个”,“以及可选的线性空格(LWS)隔开。例如:
(*LWS element *(*LWS ,*LWS element)) ----> 1#element。
null 元素被允许包含在其中,但是不计算到element的个数中。因此,在至少需要一个元素的地方,至少要出现一个非null元素。
;
后跟注释
implied * LWS
除非特别声明,LWS可出现在任何两个相邻单词之间(token或者quoted-string),以及任何相邻的单词和separator之间。任何两个token之间必须存在至少一个分隔符(LWS 与/或者separators)