Skip to main content

1. Introduction (简介)

互联网技术规范通常需要定义正式的语法,并且可以自由使用对其有用的任何符号。多年来,一种修改后的巴科斯-瑙尔范式 (BNF, Backus-Naur Form),称为扩充BNF (ABNF),在许多互联网规范中很受欢迎。它在紧凑性和简单性与合理的表示能力之间取得了平衡。在互联网的最初几年,每个规范都包含自己的ABNF定义。这导致了一些变化和不确定性,使得难以判断特定构造是否是允许的。本文档将ABNF分离和更新为一个单独的文档。

标准BNF和ABNF之间的差异涉及命名规则、重复、备选项、顺序无关性和值范围。附录B提供了核心词法分析器的规则定义和编码,这些规则在几个互联网规范中很常见。它被作为一个单独的文档提供,以便方便引用,并且(我们希望)促进关键基础规则的共同使用。

ABNF的由来

ABNF源自标准BNF的需要,但需要更简洁的表示法和更多的表达能力。它最初在RFC 733(电子邮件格式)中使用,后来在RFC 822(电子邮件标准)中得到了广泛应用。

设计目标

  • 紧凑性: 表示法应该简洁易读
  • 简单性: 规则应该直观
  • 表达能力: 能够表达复杂的语法结构
  • 一致性: 统一的符号系统