Skip to main content

Appendix B: Core ABNF of ABNF (ABNF的核心规则)

B.1. Core Rules (核心规则)

某些基本规则在大写形式,例如SP、HTAB、CRLF、DIGIT、ALPHA等。

ALPHA          =  %x41-5A / %x61-7A   ; A-Z / a-z

BIT = "0" / "1"

CHAR = %x01-7F
; 任何7位US-ASCII字符,排除NUL

CR = %x0D
; 回车

CRLF = CR LF
; 互联网标准换行

CTL = %x00-1F / %x7F
; 控制字符

DIGIT = %x30-39
; 0-9

DQUOTE = %x22
; " (双引号)

HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F"

HTAB = %x09
; 水平制表符

LF = %x0A
; 换行

LWSP = *(WSP / CRLF WSP)
; 使用CRLF加空格/制表符的续行
; 线性空白(过去的换行)

OCTET = %x00-FF
; 8位数据

SP = %x20

VCHAR = %x21-7E
; 可见(打印)字符

WSP = SP / HTAB
; 空白

B.2. Common Encoding (常见编码)

从外部引用ABNF规则非常常见。以下核心规则在许多规范中使用:

最常用的核心规则

规则定义说明
ALPHA%x41-5A / %x61-7A字母 A-Z / a-z
DIGIT%x30-39数字 0-9
HEXDIGDIGIT / "A"-"F"十六进制数字
DQUOTE%x22双引号 "
SP%x20空格
HTAB%x09水平制表符
WSPSP / HTAB空白
LWSP*(WSP / CRLF WSP)线性空白
VCHAR%x21-7E可见字符
CHAR%x01-7F任何ASCII字符(除NUL)
OCTET%x00-FF8位字节
CTL%x00-1F / %x7F控制字符
CR%x0D回车
LF%x0A换行
CRLFCR LF回车换行
BIT"0" / "1"

使用示例

; 简单的HTTP头部(简化版)
header-field = field-name ":" OWS field-value OWS

field-name = token
field-value = *( field-content / obs-fold )
field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
field-vchar = VCHAR / obs-text

token = 1*tchar
tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*"
/ "+" / "-" / "." / "0"-"9" / "A"-"Z"
/ "^" / "_" / "`" / "a"-"z" / "|" / "~"

OWS = *( SP / HTAB )
; 可选空白

核心规则快速参考卡

字符类

ALPHA = A-Z / a-z
DIGIT = 0-9
HEXDIG = 0-9 / A-F / a-f
VCHAR = 可见字符 (不包括空白和控制字符)
CHAR = 任何ASCII字符 (除NUL)
OCTET = 任何字节 (0x00-0xFF)
CTL = 控制字符

空白

SP = 空格
HTAB = 制表符
WSP = 空格或制表符
LWSP = 线性空白(包括续行)

行结束

CR = 回车 (0x0D)
LF = 换行 (0x0A)
CRLF = 回车换行 (互联网标准)

其他

DQUOTE = 双引号 (")
BIT = 0 或 1

重要提示: 这些核心规则构成了大多数互联网协议规范的基础。熟悉它们对于阅读和编写RFC至关重要!