互联网工程任务组(IETF) P. Kyzivat
征求意见稿:7405 2014 年 12 月
更新:5234
类别:标准跟踪
ISSN:2070-1721
ABNF 中区分大小写字符串的支持
摘要
本文档扩展了 ABNF(Augmented Backus-Naur Form,增广巴科斯-
瑙尔范式)的基础定义,加入一种指定 US-ASCII 字符串字面量的
方式,使其以区分大小写的方式进行匹配。
本备忘录状态
本文档是互联网标准跟踪文档。
本文档是互联网工程任务组(IETF)的产物。它代表了 IETF
社区的共识。它已经过公开审阅,并已获互联网工程指导组
(IESG)批准发布。有关互联网标准的更多信息可见
RFC 5741 第 2 节。
有关本文档的当前状态、任何勘误以及如何提供反馈的信息,
可在以下地址获得:
http://www.rfc-editor.org/info/rfc7405。
Copyright Notice
Copyright (c) 2014 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Kyzivat 标准跟踪 [第 1 页]
RFC 7405 ABNF 中区分大小写字符串的支持 2014 年 12 月
目录
1. 引言 . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. 对 RFC 5234 的更新 . . . . . . . . . . . . . . . . . . . 2
2.1. 终结值 - 字面文本字符串 . . . . . . . . . . . . . . . 3
2.2. ABNF 的 ABNF 定义 - char-val . . . . . . . . . . . . 4
3. 安全考虑 . . . . . . . . . . . . . . . . . . . . . . . . 4
4. 规范性引用 . . . . . . . . . . . . . . . . . . . . . . . 4
作者地址 . . . . . . . . . . . . . . . . . . . . . . . . . 4
1. 引言
ABNF(Augmented Backus-Naur Form,增广巴科斯-瑙尔范式)的
基础定义支持 US-ASCII 字符串字面量。这些字面量的匹配以
不区分大小写的方式完成。虽然这通常是期望的行为,但在某些
情况下,需要对字符串字面量进行区分大小写的匹配。用于区分
大小写匹配的字面量必须使用这些字符的数字表示来指定,这在
编写和阅读时都不方便且容易出错。
本文档扩展 ABNF,使其具有两种不同类型的 US-ASCII 字符串
字面量。一种类型使用区分大小写的匹配,而另一种使用不区分
大小写的匹配。这些类型使用类型前缀表示,类似于数值所用的
类型前缀。如果未使用前缀,则使用不区分大小写的匹配(这与
先前行为一致)。
本文档的结构是一组针对完整 ABNF 规范 [RFC5234] 的变更。
2. 对 RFC 5234 的更新
本文档对 [RFC5234] 的两个部分进行了更改。这两个
更改如下:
o 将 [RFC5234] 第 2.3 节 的后半部分(从
“ABNF permits the specification of literal text strings” 开始)
替换为第 2.1 节的内容。
o 将 [RFC5234] 第 4 节 中的 <char-val> 规则替换为
第 2.2 节的内容。
Kyzivat 标准跟踪 [第 2 页]
RFC 7405 ABNF 中区分大小写字符串的支持 2014 年 12 月
2.1. 终结值 - 字面文本字符串
ABNF 允许直接指定以引号括起的字面文本字符串。因此:
command = "command string"
字面文本字符串被解释为一组串接的可打印字符。
注:
这些字符串的字符集为 US-ASCII。
ABNF 中的字面文本字符串可以区分大小写,也可以不区分大小写。
与字面文本字符串一起使用的匹配形式,由加在带引号字符串前的
前缀表示。允许使用以下前缀:
%s = 区分大小写
%i = 不区分大小写
为了与 ABNF 的先前实现保持一致,没有前缀表示该字符串不区分
大小写,并且等价于带有 "%i" 前缀。
因此:
rulename = %i"aBc"
以及:
rulename = "abc"
都会匹配 "abc"、"Abc"、"aBc"、"abC"、"ABc"、"aBC"、"AbC" 和
"ABC"。
相比之下:
rulename = %s"aBc"
只会匹配 "aBc",而不会匹配 "abc"、"Abc"、"abC"、"ABc"、
"aBC"、"AbC" 或 "ABC"。
过去,会使用各个字符的数字规范来定义区分大小写的规则。
Kyzivat 标准跟踪 [第 3 页]
RFC 7405 ABNF 中区分大小写字符串的支持 2014 年 12 月
例如:
rulename = %d97 %d98 %d99
或
rulename = %x61.62.63
将只匹配仅由小写字符 abc 组成的字符串。使用带前缀的字面文本
字符串,相比旧方式具有明显的可读性优势。
2.2. ABNF 的 ABNF 定义 - char-val
char-val = case-insensitive-string /
case-sensitive-string
case-insensitive-string =
[ "%i" ] quoted-string
case-sensitive-string =
"%s" quoted-string
quoted-string = DQUOTE *(%x20-21 / %x23-7E) DQUOTE
; quoted string of SP and VCHAR
; without DQUOTE
3. 安全考虑
安全性被确认为与本文档无关。
4. 规范性引用
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax
Specifications: ABNF", STD 68, RFC 5234, January 2008,
<http:/www.rfc-editor.org/info/rfc5234>.
作者地址
Paul Kyzivat
Massachusetts
United States
EMail: pkyzivat@alum.mit.edu
Kyzivat 标准跟踪 [第 4 页]