from
Jargon File (4.4.4, 14 Aug 2003)
BNF
/B.N.F/, n.
1. [techspeak] Acronym for Backus Normal Form (later retronymed to
Backus-Naur Form because BNF was not in fact a normal form), a
metasyntactic notation used to specify the syntax of programming
languages, command sets, and the like. Widely used for language
descriptions but seldom documented anywhere, so that it must usually
be learned by osmosis from other hackers. Consider this BNF for a U.S.
postal address:
<postal-address> ::= <name-part> <street-address> <zip-part>
<personal-part> ::= <name> | <initial> "."
<name-part> ::= <personal-part> <last-name> [<jr-part>] <EOL>
| <personal-part> <name-part>
<street-address> ::= [<apt>] <house-num> <street-name> <EOL>
<zip-part> ::= <town-name> "," <state-code> <ZIP-code> <EOL>
This translates into English as: "A postal-address consists of a
name-part, followed by a street-address part, followed by a zip-code
part. A personal-part consists of either a first name or an initial
followed by a dot. A name-part consists of either: a personal-part
followed by a last name followed by an optional jr-part (Jr., Sr., or
dynastic number) and end-of-line, or a personal part followed by a
name part (this rule illustrates the use of recursion in BNFs,
covering the case of people who use multiple first and middle names
and/or initials). A street address consists of an optional apartment
specifier, followed by a street number, followed by a street name. A
zip-part consists of a town-name, followed by a comma, followed by a
state code, followed by a ZIP-code followed by an end-of-line." Note
that many things (such as the format of a personal-part, apartment
specifier, or ZIP-code) are left unspecified. These are presumed to be
obvious from context or detailed somewhere nearby. See also {parse}.
2. Any of a number of variants and extensions of BNF proper, possibly
containing some or all of the {regexp} wildcards such as * or +. In
fact the example above isn't the pure form invented for the Algol-60
report; it uses [], which was introduced a few years later in IBM's
PL/I definition but is now universally recognized.
3. In {science-fiction fandom}, a `Big-Name Fan' (someone famous or
notorious). Years ago a fan started handing out black-on-green BNF
buttons at SF conventions; this confused the hacker contingent
terribly.