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 |
HEXDIG | DIGIT / "A"-"F" | 十六进制数字 |
DQUOTE | %x22 | 双引号 " |
SP | %x20 | 空格 |
HTAB | %x09 | 水平制表符 |
WSP | SP / HTAB | 空白 |
LWSP | *(WSP / CRLF WSP) | 线性空白 |
VCHAR | %x21-7E | 可见字符 |
CHAR | %x01-7F | 任何ASCII字符(除NUL) |
OCTET | %x00-FF | 8位字节 |
CTL | %x00-1F / %x7F | 控制字符 |
CR | %x0D | 回车 |
LF | %x0A | 换行 |
CRLF | CR 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至关重要!