Augmented Backus–Naur form

The motive principle for ABNF is to describe a formal system of a language to be used as a bidirectional communications protocol.

It is defined by Internet Standard 68 ("STD 68", type case sic), which as of December 2010[update] was RFC 5234, and it often serves as the definition language for IETF communication protocols.

[3] RFC 7405 updates it, adding a syntax for specifying case-sensitive string literals.

These strings are case-insensitive, and the character set used is (US-)ASCII.

Prior to that, a case-sensitive string could only be specified by listing the individual characters: to match “aBc”, the definition would be %d97.66.99.

The LWSP definition in RFC5234 is controversial[4] because at least one whitespace character is needed to form a delimiter between two fields.

The optional gives the maximal number of elements to be included (with the default of infinity).

[Rule] To indicate an optional element, the following constructions are equivalent: The following operators have the given precedence from tightest binding to loosest binding: Use of the alternative operator with concatenation may be confusing, and it is recommended that grouping be used to make explicit concatenation groups.

The (U.S.) postal address example given in the augmented Backus–Naur form (ABNF) page may be specified as follows: RFC 5234 adds a warning in conjunction to the definition of LWSP as follows: Use of this linear-white-space rule permits lines containing only white space that are no longer legal in mail headers and have caused interoperability problems in other contexts.

ABNF syntax diagram of ABNF rules
ABNF syntax diagram of ABNF rules
ABNF syntax diagram of core rules
ABNF syntax diagram of core rules