0

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 LFtext

在 RFC 822 的勘误表中没有提到这一点 - 并且 RFC 的后续 RFC (如 2822)用全新的规则替换了与符号的规则,所以我也无法从新语法中推断出它的含义。

那么是什么&意思呢?

4

1 回答 1

2

简写英文单词“and”。它甚至遵守英语标点规则。

比较 RFC 822 中的 2 个定义:

     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>
于 2020-05-10T09:14:21.597 回答