メインコンテンツまでスキップ

1. Introduction (序論)

インターネット技術仕様では、形式的な構文 (Formal Syntax) を定義する必要があることがよくあり、著者が有用と考える任意の表記法を自由に使用できます。長年にわたり、バッカス・ナウア記法 (BNF, Backus-Naur Form) の修正版である拡張BNF (ABNF, Augmented BNF) が、多くのインターネット仕様で人気を博してきました。これは、コンパクト性とシンプル性を、合理的な表現力とバランスさせています。Arpanetの初期の頃、各仕様には独自のABNF定義が含まれていました。これには、電子メール仕様である[RFC733]と次に[RFC822]が含まれており、これらがABNFを定義するための一般的な引用となりました。現在の文書は、選択的な参照を可能にするためにこれらの定義を分離しています。当然のことながら、いくつかの修正と拡張も提供しています。

標準BNFとABNFの違いは、命名規則 (Naming Rules)、繰り返し (Repetition)、代替 (Alternatives)、順序独立性 (Order-Independence)、および値範囲 (Value Ranges) に関わります。付録Bは、いくつかのインターネット仕様に共通するコア字句解析器 (Core Lexical Analyzer) のタイプに対するルール定義とエンコーディングを提供します。これは便宜のために提供されており、本文書の本文で定義されているメタ言語 (Meta Language) とは別のものであり、その正式なステータスとも別のものです。

ABNFの起源

ABNFは、標準BNFよりも簡潔な表記法とより大きな表現力が必要であることから生まれました。最初にRFC 733 (電子メールフォーマット) で使用され、その後RFC 822 (電子メール標準) で広く採用されました。

設計目標

  • コンパクト性: 表記法は簡潔で読みやすくあるべきである
  • シンプル性: ルールは直感的であるべきである
  • 表現力: 複雑な構文構造を表現できる能力
  • 一貫性: 統一された表記システム