The IETF RFC 822 has these BNF rules:
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>
I'd like to know what the ampersand symbol &
signifies in these rules. The ampersand symbol is not defined by RFC 822's own Notational Conventions section (Section 2). I assume RFC 822 is using RFC 733 for its BNF/ABNF, but RFC 733 doesn't define what the ampersand means either.
From the context I've determined the ampersand does not mean any of the following:
- List item separator (that's what a comma is for, and the ampersand does not represent the final conjunction in an Oxford Comma-style expression because we see the
&
prior to the last,
in thetext
rule).- And if it is a list-item separator, how should it be interpreted in the case of
dtext
?
- And if it is a list-item separator, how should it be interpreted in the case of
- Concatenation (because a concatenation is described by having two adjacent production rules with no operator between them).
- Additionally because
CRLF
is already a concatenation of CR and LF, but RFC 822 differentiates betweenCRLF
andbare CR & bare LF
in thetext
rule.
- Additionally because
There's no mention of this in RFC 822's errata - and RFC's successor RFCs like 2822 replace the rules with ampersands with entirely new rules, so I can't infer what it means from the new syntax eithe.
So what does &
mean?
Shorthand English word "and". It even observes English punctuation rules.
Compare the 2 definitions from RFC 822: