扩充巴科斯范式

在计算机科学中，扩充巴科斯-瑙尔范式（ABNF）是一种基于巴科斯-瑙尔范式（BNF）的元语言，但它有自己的语法和派生规则。ABNF的原动原则是描述一种作为双向通信协议的语言的形式系统。它是由第68号互联网标准（"STD 68"，大小写样式按照原文）定义的，也就是RFC 5234，经常用于互联网工程任务组（IETF）通信协议的定义语言。
RFC 5234取代了RFC 4234 (取代了RFC 2234).

最终值

最终值由一个或多个数值字符指定。
数值字符可按下面的方式指定：先是一个百分号“%”，紧跟着基数（b = 二进制, d = 十进制, x = 十六进制），再其后是这个数值或数值串（用“.”来指示串联）。例如：“回车”可以用十进制的%d13或十六进制的%x0D来指定，而“回车换行”则可以用%d13.10来指定。
字面文本是通过包含在在双引号（"）中字符串来指定的。这些字符串是不区分大小写的，使用的字符集是（US-）ASCII。所以字符串“abc”将匹配“abc”,“Abc”,“aBc”,“abC”,“ABc”,“AbC”,“aBC”和“ABC”。对于区分大小写的匹配，必须定义明确的字符，例如:若要匹配“aBc”，定义必须是%d97 %d66 %d99。

空白字符

空白字符被用来分隔定义中的各个元素:要使空格被识别为分割符则必须明确的包含它。

定量重复n

n规则
要表示特定数目的元素可使用形式<n>元素，相当于用不定量重复形式表示的<n>*<n>元素。
使用2DIGIT得到两个数字，使用3DIGIT得到三个数字。(DIGIT在下面的核心规则中定义，也见例子中的zip-code)。

注释;

;注释
注释从一个分号（“;”）开始，并持续到此行的结束。

例子

在巴科斯范式（BNF）条目中的邮政地址的例子可以被指定为:
postal-address = name-part street zip-part

name-part = *(personal-part SP) last-name [SP suffix] CRLF
name-part = / personal-part CRLF

personal-part = first-name / (initial ".")
first-name = *ALPHA
initial = ALPHA
last-name = *ALPHA
suffix = ("Jr." / "Sr." / 1*("I" / "V" / "X"))

street = [apt SP] house-num SP street-name CRLF
apt = 1*4DIGIT
house-num = 1*8（DIGIT / ALPHA）
street-name = 1*VCHAR

zip-part = town-name "," SP state 1*2SP zip-code CRLF
town-name = 1*(ALPHA / SP)
state = 2ALPHA
zip-code = 5DIGIT ["-" 4DIGIT]

隐患

RFC 5234加入了一条结合LWSP的警告，如下: 
若使用该直线空白规则，将允许存在只包含空白字符的行，而这样的行在邮件头中已不再合法，并且已在其他环境中导致了互操作问题。
不要在定义邮件头时使用它，在其他环境下使用时也要格外注意。