JargonFile/entries/BNF.txt

34 lines
2.2 KiB
Plaintext
Raw Normal View History

2014-04-26 10:52:28 -04:00
BNF
2014-04-26 11:54:15 -04:00
/BNF/ , 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
2018-10-15 14:54:35 -04:00
::= name-part street-address zip-part personal-part ::= name | initial .
name-part ::= personal-part last-name [ jr-part ] EOL | personal-part
2014-04-26 11:54:15 -04:00
name-part street-address ::=[ apt ] house-num street-name EOL zip-part
2018-10-15 14:54:35 -04:00
::= town-name, state-code ZIP-code EOL This translates into English as:
2014-04-26 11:54:15 -04:00
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
2018-10-15 14:54:35 -04:00
invented for the Algol-60 report; it uses [], which was introduced a few
2014-04-26 11:54:15 -04:00
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.