IETF RFC 822具有以下 BNF 规则:
text = <any CHAR, including bare ; => atoms, specials,
CR & bare LF, but NOT ; comments and
including CRLF> ; quoted-strings are
; NOT recognized.
qtext = <any CHAR excepting <">, ; => may be folded
"\" & CR, and including
linear-white-space>
dtext = <any CHAR excluding "[", ; => may be folded
"]", "\" & CR, & including
linear-white-space>
我想知道与符号&
在这些规则中的含义。& 符号不是由 RFC 822 自己的 Notational Conventions 部分(第 2 节)定义的。我假设 RFC 822 将 RFC 733 用于其 BNF/ABNF,但 RFC 733 也没有定义 & 符号的含义。
根据上下文,我确定 &号并不意味着以下任何一种:
- 列表项分隔符(这就是逗号的用途,并且 & 号不代表牛津逗号样式表达式中的最后一个连词,因为我们在规则中看到了
&
先于最后一个)。,
text
- 如果它是一个列表项分隔符,在 的情况下应该如何解释
dtext
?
- 如果它是一个列表项分隔符,在 的情况下应该如何解释
- 连接(因为连接是通过两个相邻的生产规则来描述的,它们之间没有运算符)。
- 另外因为已经是 CR 和 LF 的串联,但 RFC 822在规则中
CRLF
区分了CRLF
和。bare CR & bare LF
text
- 另外因为已经是 CR 和 LF 的串联,但 RFC 822在规则中
在 RFC 822 的勘误表中没有提到这一点 - 并且 RFC 的后续 RFC (如 2822)用全新的规则替换了与符号的规则,所以我也无法从新语法中推断出它的含义。
那么是什么&
意思呢?