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 :=
ietf-token :=
id := "Content-ID" ":" msg-id
mechanism := "7bit" / "8bit" / "binary" /
"quoted-printable" / "base64" /
ietf-token / x-token
MIME-extension-field :=
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 :=
; Characters not listed as "mail-safe" in
; RFC 2049 are also not recommended.
subtype := extension-token / iana-token
token := 1*
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 :=