Abstract syntax of ABNF.
ABNF is a language to describe the concrete syntax of languages. Being itself a language, ABNF has its own concrete syntax, described in [RFC:4] using ABNF itself. To break the self-description circularity, we start by formalizing an abstract syntax of ABNF, based on an inspection of the concrete syntax in [RFC:4]. The ABNF abstract syntax abstracts away from the ABNF concrete syntax things that are not relevant to the ABNF semantics, such as blank space and comments, as well as certain restrictions that are not needed to define the semantics.