인터넷 엔지니어링 태스크 포스(IETF)                        P. Kyzivat
RFC 문서: 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                      표준 트랙                         [Page 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                      표준 트랙                         [Page 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                      표준 트랙                         [Page 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
                                ; SP 및 VCHAR의 quoted string
                                ;  DQUOTE 제외

3.  보안 고려 사항

   보안은 이 문서와 무관하다고 확실히 여겨진다.

4.  규범적 참조 문헌

   [RFC5234]  Crocker, D. and P. Overell, "구문 명세를 위한 증강 BNF:
              ABNF", STD 68, RFC 5234, 2008년 1월,
              <http:/www.rfc-editor.org/info/rfc5234>.

저자 주소

   Paul Kyzivat
   Massachusetts
   United States

   EMail: pkyzivat@alum.mit.edu









Kyzivat                      표준 트랙                         [Page 4]