Internet Engineering Task Force (IETF)                        P. Kyzivat
Request for Comments: 7405                                 December 2014
Updates: 5234
Category: Standards Track
ISSN: 2070-1721

Case-Sensitive String Support in ABNF




This document extends the base definition of ABNF (Augmented Backus-Naur Form) to include a way to specify US-ASCII string literals that are matched in a case-sensitive manner.

このドキュメントは、ABNF(Augmented Backus-Naur Form)の基本定義を拡張して、大文字と小文字を区別する方法で一致するUS-ASCII文字列リテラルを指定する方法を含めます。

Status of This Memo


This is an Internet Standards Track document.

これはInternet Standards Trackドキュメントです。

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

このドキュメントは、IETF(Internet Engineering Task Force)の製品です。これは、IETFコミュニティのコンセンサスを表しています。公開レビューを受け、インターネットエンジニアリングステアリンググループ(IESG)による公開が承認されました。インターネット標準の詳細については、RFC 5741のセクション2をご覧ください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at


Copyright Notice


Copyright (c) 2014 IETF Trust and the persons identified as the document authors. All rights reserved.

Copyright(c)2014 IETF Trustおよびドキュメントの作成者として識別された人物。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents ( 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.

この文書は、BCP 78およびこの文書の発行日に有効なIETF文書に関するIETFトラストの法的規定(の対象となります。これらのドキュメントは、このドキュメントに関するあなたの権利と制限を説明しているため、注意深く確認してください。このドキュメントから抽出されたコードコンポーネントには、Trust Legal Provisionsのセクション4.eに記載されているSimplified BSD Licenseのテキストが含まれている必要があり、Simplified BSD Licenseに記載されているように保証なしで提供されます。

Table of Contents


   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Updates to RFC 5234 . . . . . . . . . . . . . . . . . . . . .   2
     2.1.  Terminal Values - Literal Text Strings  . . . . . . . . .   3
     2.2.  ABNF Definition of ABNF - char-val  . . . . . . . . . . .   4
   3.  Security Considerations . . . . . . . . . . . . . . . . . . .   4
   4.  Normative References  . . . . . . . . . . . . . . . . . . . .   4
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .   4
1. Introduction
1. はじめに

The base definition of ABNF (Augmented Backus-Naur Form) supports US-ASCII string literals. The matching of these literals is done in a case-insensitive manner. While this is often the desired behavior, in some situations, case-sensitive matching of string literals is needed. Literals for case-sensitive matching must be specified using the numeric representation of those characters, which is inconvenient and error prone both to write and read.

ABNF(Augmented Backus-Naur Form)の基本定義は、US-ASCII文字列リテラルをサポートしています。これらのリテラルのマッチングは、大文字と小文字を区別しない方法で行われます。これは多くの場合望ましい動作ですが、状況によっては、文字列リテラルの大文字と小文字を区別した照合が必要になります。大文字と小文字を区別するマッチングのリテラルは、それらの文字の数値表現を使用して指定する必要があります。これは不便であり、書き込みと読み取りの両方でエラーが発生しやすくなります。

This document extends ABNF to have two different types of US-ASCII string literals. One type is matched using case-sensitive matching, while the other is matched using case-insensitive matching. These types are denoted using type prefixes similar to the type prefixes used with numeric values. If no prefix is used, then case-insensitive matching is used (as is consistent with previous behavior).

このドキュメントはABNFを拡張して、2つの異なるタイプのUS-ASCII文字列リテラルを持つようにします。 1つのタイプは大文字と小文字を区別するマッチングを使用してマッチングされ、もう1つのタイプは大文字と小文字を区別しないマッチングを使用してマッチングされます。これらのタイプは、数値で使用されるタイププレフィックスと同様のタイププレフィックスを使用して示されます。プレフィックスを使用しない場合は、大文字と小文字を区別しないマッチングが使用されます(以前の動作と同じです)。

This document is structured as a set of changes to the full ABNF specification [RFC5234].


2. Updates to RFC 5234
2. RFC 5234の更新

This document makes changes to two parts of [RFC5234]. The two changes are as follows:

このドキュメントは、[RFC5234]の2つの部分に変更を加えます。 2つの変更点は次のとおりです。

o Replace the last half of Section 2.3 of [RFC5234] (beginning with "ABNF permits the specification of literal text strings") with the contents of Section 2.1.

o [RFC5234]のセクション2.3の後半(「ABNFはリテラルテキスト文字列の指定を許可する」で始まる)をセクション2.1の内容で置き換えます。

o Replace the <char-val> rule in Section 4 of [RFC5234] with the contents of Section 2.2.

o [RFC5234]のセクション4の<char-val>ルールをセクション2.2の内容に置き換えます。

2.1. Terminal Values - Literal Text Strings
2.1. 端末値-リテラルテキスト文字列

ABNF permits the specification of literal text strings directly, enclosed in quotation marks. Hence:


         command     =  "command string"

Literal text strings are interpreted as a concatenated set of printable characters.




The character set for these strings is US-ASCII.


Literal text strings in ABNF may be either case sensitive or case insensitive. The form of matching used with a literal text string is denoted by a prefix to the quoted string. The following prefixes are allowed:


%s = case-sensitive %i = case-insensitive

%s =大文字と小文字を区別%i =大文字と小文字を区別しない

To be consistent with prior implementations of ABNF, having no prefix means that the string is case insensitive and is equivalent to having the "%i" prefix.




         rulename = %i"aBc"



         rulename = "abc"

will both match "abc", "Abc", "aBc", "abC", "ABc", "aBC", "AbC", and "ABC".


In contrast:


         rulename = %s"aBc"

will match only "aBc" and will not match "abc", "Abc", "abC", "ABc", "aBC", "AbC", or "ABC".


In the past, the numerical specification of individual characters was used to define a case-sensitive rule.


For example:


         rulename    =  %d97 %d98 %d99



         rulename    =  %x61.62.63

will match only the string that comprises only the lowercase characters, abc. Using a literal text string with a prefix has a clear readability advantage over the old way.


2.2. ABNF Definition of ABNF - char-val
2.2. ABNFのABNFの定義-char-val

char-val = case-insensitive-string / case-sensitive-string

char-val =大文字と小文字を区別しない文字列/大文字と小文字を区別する文字列

case-insensitive-string = [ "%i" ] quoted-string

大文字小文字を区別しない文字列= ["%i"]引用文字列

case-sensitive-string = "%s" quoted-string

大文字と小文字を区別する文字列= "%s"引用文字列

         quoted-string  =  DQUOTE *(%x20-21 / %x23-7E) DQUOTE
                                ; quoted string of SP and VCHAR
                                ;  without DQUOTE
3. Security Considerations
3. セキュリティに関する考慮事項

Security is truly believed to be irrelevant to this document.


4. Normative References
4. 引用文献

[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008, <http:/>.

[RFC5234] Crocker、D。およびP. Overell、「構文仕様の拡張BNF:ABNF」、STD 68、RFC 5234、2008年1月、<http:/>。

Author's Address


Paul Kyzivat Massachusetts United States