1. 引言 (Introduction)
Internet technical specifications 经常需要定义 formal syntax, 并且可以自由采用作者认为有用的任何 notation. 多年来, Backus-Naur Form (BNF) 的一种修改版本 Augmented BNF (ABNF) 在许多 Internet specifications 中很受欢迎. 它在 compactness 和 simplicity 之间取得平衡, 同时具有合理的 representational power. 在 Arpanet 早期, 每份 specification 都包含自己的 ABNF 定义. 这包括 email specifications, 即 [RFC733] 以及后来的 [RFC822], 它们后来成为定义 ABNF 的常见引用. 当前文档将这些定义分离出来, 以便选择性引用. 可以预期, 它也提供了一些修改和增强.
standard BNF 与 ABNF 之间的差异涉及 naming rules, repetition, alternatives, order-independence 和 value ranges. Appendix B 提供了若干 Internet specifications 常见类型的 core lexical analyzer 的 rule definitions 和 encoding. 这只是为了方便而提供, 在其他方面独立于本文档正文中定义的 meta language, 也独立于其正式状态.
ABNF 的起源 (Origins of ABNF)
ABNF 源于对一种比 standard BNF 更简洁且 expressive power 更强的 notation 的需求. 它最早用于 RFC 733 (email format), 后来在 RFC 822 (email standard) 中获得广泛采用.
设计目标 (Design Goals)
- Compactness: notation 应简洁且可读
- Simplicity: rules 应直观
- Expressiveness: 能够表达复杂 syntactic structures
- Consistency: 统一的 notation system