语法规范的扩展巴科斯范式:ABNF( 二 )


非负整数 。在某些特定环境中,将指定从值到字符集(如ASCII码)的一个非凡映射(编码) 。
终结符由一个或多个数字字符说明,这些数字字符的基本说明由其他字符显式指出 。以
下的基是目前已经定义的:
b=binary
d=decimal
x=hexadecimal
因此:
CR=?
CR=%x0D
分别说明了[US-ASCII]中回车符的十进制和十六进制的表示 。
下例是一个连续串值的压缩表示,使用句点(“.”)来说明在值中的符号间的分隔 。因此:
CRLF=?.10
扩展巴克斯范式答应在双引号中直接说明文字文本串 。因此:
command="commandstring"
文字文本串解释为可打印的字符连续集 。
注重:扩展巴克斯范式字符串大小写不敏感,并且这些串的字符集使用us-ascii字符集 。
因此:
rulename="abc"
以及:
rulename="aBc"
将与“abc”,“Abc”,“aBc”,“abC”,“ABc”,“aBC”,“AbC”和“ABC”相匹配 。
为了说明某个规则是大小写敏感的,请单独说明该规则使用的字符 。
例如:
rulename=???

rulename=?.98.99
将仅与只由小写字符abc组成的串匹配 。
2.4外部编码
终结符值的外部表示根据存储或传输环境的限制而变化 。因此,基于相同的扩展巴科斯
范式的语法可能有多个外部编码,如其中之一是7位US-ASCII环境下的;另一个是二进制
八位位组环境下的;当使用16位Unicode编码时,还会有另一个不同的外部编码 。尽管附
录A(核心)给出了7位US-ASCII编码环境的定义,该环境在大多数互联网应用中很普遍,但
是,编码细节超出了扩展巴克斯范式的描述范围 。
将外部编码从语法中分离出来,目的是使得可替换的编码环境能用于同一语法 。
3.操作符
3.1连接规则1规则2
通过列出一系列规则名,一条规则可用于定义一个简单有序的值串--即,一连串邻接的
字符 。例如:
foo=%x61;a
bar=%x62;b
mumble=Foobarfoo
因此规则与小写字符串"aba"匹配 。
线性空白字符:连接操作处于扩展巴克斯范式解析模型的核心 。一串相邻的字符(值)
根据扩展巴克斯范式定义的规则进行解析 。就互联网规范而言,过去答应线性空白字符(空
格符和水平制表符)在主结构,如分界非凡字符或原子字符串,两边自由发展以及隐含打印 。
注重:本扩展巴克斯范式规范没有提供线性空白字符的隐式规范 。
任何希望答应在分界符或字符串两边出现线性空白字符的语法必须显式说明之 。对于那
些被更高层规则多次使用的“核心”规则,在其中提供这些空白字符经常是有用的 。“核心”
规则可以编入一个词法分析器中或简单地作为主规则集的一部分 。
3.2选择 规则1/规则2
由斜杠(“/”)分隔的元素是可选的 。
因此,
foo/bar
将接受
注重:一个包含字母字符的引用串,是用于说明选择字符的非凡形式,它被解释为一个
非终结符,该非终结符用所包含的字符,以指定的顺序但可以是任意大小写的混合方式,来
描述组合串集 。
3.3增式选择 规则1=/规则2
在段落中指定一列选择有时会很方便 。即,通过稍后的规则定义增加选择集,一个初始
规则可能匹配一个或多个选择 。这对于那些源于同一父规则集而其他方面独立的规范尤其有
用,如常出现于参数列表中 。使用如下结构,扩展巴克斯范式答应这样的增式定义:
oldrule=/additional-alternatives

推荐阅读