附属書A 文法一覧

Appendix A -- Collected Grammar

この附属書は,この標準仕様書(TS)で規定されるすべての構文の,完全なBNF文法を記載する示す。

This appendix contains the complete BNF grammar for all the syntax specified by this document.

しかし,この文法は,これ自身それ自体(追加)だけでは不完全である。この文法は,RFC 822で定義される多くの幾つかの構文(抜け)規則を名前によって参照する。これらの定義をここで再び作成し示し,2つ二つの間で意図しない違いの差異を生じる危険を冒すのではなく,この文書規定は,残りの定義については,読者にRFC 822を参照させる(補足)参照してもらうことにした。(抜け)項(term。構文の中の終端子又は非終端子。)が定義されていない場合には,それは,RFC 822の定義を参照している。

By itself, however, this grammar is incomplete. It refers by name to several syntax rules that are defined by RFC 822. Rather than reproduce those definitions here, and risk unintentional differences between the two, this document simply refers the reader to RFC 822 for the remaining definitions. Wherever a term is undefined, it refers to the RFC 822 definition.
  attribute := token
             ; 属性の合致は,
             ; 常に大文字・小文字を区別しない。

  composite-type := "message" / "multipart" / extension-token

  content := "Content-Type" ":" type "/" subtype
             *(";" parameter)
             ; メディア型及び下位型の合致は,
             ; 常に大文字・小文字を区別しない。

  description := "Content-Description" ":" *text

  discrete-type := "text" / "image" / "audio" / "video" /
                   "application" / extension-token

  encoding := "Content-Transfer-Encoding" ":" mechanism

  entity-headers := [ content CRLF ]
                    [ encoding CRLF ]
                    [ id CRLF ]
                    [ description CRLF ]
                    *( MIME-extension-field CRLF )

  extension-token := ietf-token / x-token

  hex-octet := "=" 2(DIGIT / "A" / "B" / "C" / "D" / "E" / "F")
               ; 127より大きな文字,=,又は行末のスペースSPACE又は若しくはタブTABには
               ; オクテットが使われなければならず,
               ; TS X 0107で“mail-safe”の一覧にない文字のためには
               ; オクテットが推奨される。

  iana-token := <公式に定義された拡張トークン。
                 この形式のトークンは,TS X 0106で規定される通りとおりに
                 IANAに登録されなければならない。>

  ietf-token := <標準化手続きRFCによりよって定義され、IANAで登録された拡張トークン>

  id := "Content-ID" ":" msg-id

  mechanism := "7bit" / "8bit" / "binary" /
               "quoted-printable" / "base64" /
               ietf-token / x-token

  MIME-extension-field := <文字列“Content-”文字列で始まる
                           任意のRFC 822ヘッダフィールド。>

  MIME-message-headers := entity-headers
                          fields
                          version CRLF
                          ; このBNF定義により含まれるが含むヘッダフィールドの順序付けは,
                          ; 無視するほうがよい。

  MIME-part-headers := entity-headers
                       [ fields ]
                       ;“content-”で始まらないすべてのフィールドは,
                       ; 定義された意味を持たずもつことはできず,無視してよい。
                       ; このBNF定義により含まれるが含むヘッダフィールドの順序付けは,
                       ; 無視するほうがよい。

  parameter := attribute "=" value

  ptext := hex-octet / safe-char

  qp-line := *(qp-segment transport-padding CRLF)
             qp-part transport-padding

  qp-part := qp-section
             ; 最大長は76文字。

  qp-section := [*(ptext / SPACE / TAB) ptext]

  qp-segment := qp-section *(SPACE / TAB) "="
                ; 最大長は76文字。

  quoted-printable := qp-line *(CRLF qp-line)

  safe-char := <10進の値が33〜60及び62〜126をもつ任意のオクテット>
               ; さらに,TS X 0107の“mail-safe”の一覧にない
               ; 文字も推奨しない。

  subtype := extension-token / iana-token

  token := 1*<SPACE,CTL,tspecialsを除く,任意の(US-ASCII) CHAR>

  transport-padding := *LWSP-char
                       ; 送信者は,ゼロ長?長さが0の長さが0ではないトランスポート
                       ; パディングを生成してはならないが,
                       ; 受信者は,メッセージトランスポート
                       ; によって追加されたパディングを
                       ; 処理できなければならない。

  tspecials :=  "(" / ")" / "<" / "gt;" / "@" /
                "," / ";" / ":" / "\" / <"gt;
                "/" / "[" / "]" / "?" / "="
                ; パラメタ値内で使うため,
                ; quoted-stringでなければならない。

  type := discrete-type / composite-type

  value := token / quoted-string

  version := "MIME-Version" ":" 1*DIGIT "." 1*DIGIT

  x-token := <“X-”又は“x-”の2文字で始まり,空白を含まない,任意のトークン。>

attribute := token ; Matching of attributes ; is ALWAYS case-insensitive. composite-type := "message" / "multipart" / extension-token content := "Content-Type" ":" type "/" subtype *(";" parameter) ; Matching of media type and subtype ; is ALWAYS case-insensitive. description := "Content-Description" ":" *text discrete-type := "text" / "image" / "audio" / "video" / "application" / extension-token encoding := "Content-Transfer-Encoding" ":" mechanism entity-headers := [ content CRLF ] [ encoding CRLF ] [ id CRLF ] [ description CRLF ] *( MIME-extension-field CRLF ) extension-token := ietf-token / x-token hex-octet := "=" 2(DIGIT / "A" / "B" / "C" / "D" / "E" / "F") ; Octet must be used for characters > 127, =, ; SPACEs or TABs at the ends of lines, and is ; recommended for any character not listed in ; RFC 2049 as "mail-safe". iana-token := <A publicly-defined extension token. Tokens of this form must be registered with IANA as specified in RFC 2048.> ietf-token := <An extension token defined by a standards-track RFC and registered with IANA.> id := "Content-ID" ":" msg-id mechanism := "7bit" / "8bit" / "binary" / "quoted-printable" / "base64" / ietf-token / x-token MIME-extension-field := <Any RFC 822 header field which begins with the string "Content-"> MIME-message-headers := entity-headers fields version CRLF ; The ordering of the header ; fields implied by this BNF ; definition should be ignored. MIME-part-headers := entity-headers [fields] ; Any field not beginning with ; "content-" can have no defined ; meaning and may be ignored. ; The ordering of the header ; fields implied by this BNF ; definition should be ignored. parameter := attribute "=" value ptext := hex-octet / safe-char qp-line := *(qp-segment transport-padding CRLF) qp-part transport-padding qp-part := qp-section ; Maximum length of 76 characters qp-section := [*(ptext / SPACE / TAB) ptext] qp-segment := qp-section *(SPACE / TAB) "=" ; Maximum length of 76 characters quoted-printable := qp-line *(CRLF qp-line) safe-char := <any octet with decimal value of 33 through 60 inclusive, and 62 through 126> ; Characters not listed as "mail-safe" in ; RFC 2049 are also not recommended. subtype := extension-token / iana-token token := 1*<any (US-ASCII) CHAR except SPACE, CTLs, or tspecials> transport-padding := *LWSP-char ; Composers MUST NOT generate ; non-zero length transport ; padding, but receivers MUST ; be able to handle padding ; added by message transports. tspecials := "(" / ")" / "<" / ">" / "@" / "," / ";" / ":" / "\" / <"> "/" / "[" / "]" / "?" / "=" ; Must be in quoted-string, ; to use within parameter values type := discrete-type / composite-type value := token / quoted-string version := "MIME-Version" ":" 1*DIGIT "." 1*DIGIT x-token := <The two characters "X-" or "x-" followed, with no intervening white space, by any token>