附属書Aでは,この標準情報(TR)で規定されるすべての構文の,完全なBNF文法を記載する示す。
しかし,この文法は,これ自身それ自体(追加)だけでは不完全である。この文法は,RFC 822で定義される多くの幾つかの構文(抜け)規則を名前によって参照する。これらの定義をここで再び作成し示し,2つ二つの間ので意図しない違いの差異を生じる危険を冒すのではなく,この文書規定は,残りの定義については,読者にRFC 822を参照させる(補足)参照してもらうことにした。(抜け)項(term。構文の中の終端子又は非終端子。)が定義されていない場合には,それは,RFC 822の定義を参照している。
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には
; オクテットが使われなければならなず,
; RFC 2049で"mail-safe"の一覧にない文字のためには
; オクテットが推奨される。
iana-token := <公式に定義された拡張トークン。
この形式のトークンは,RFC2048で規定される通りとおりに
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をもつ任意のオクテット>
; さらに,RFC 2049の"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文字で始まり,空白を含まない,任意のトークン。>