BNF

/B·N·F/, 名詞

  1. [専門用語]Backus Normal Form(バッカス標準形。BNFは実際には標準形ではなかったため、のちにBackus-Naur Form〔バッカス・ナウア形式〕とレトロニム化された)の頭字語で、プログラミング言語やコマンド集合などの構文を規定するのに使われるメタ構文的記法。言語の記述に広く使われるが、どこにもあまり文書化されていないため、たいていは他のハッカーから自然と学ぶしかない。米国の郵便住所についての次のBNFを考えてみよ。

<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>

これは日本語では次のように訳せる。「postal-address(郵便住所)は、name-part(名前部)、続いてstreet-address part(街路住所部)、続いてzip-code part(郵便番号部)から成る。personal-part(個人部)は、ファーストネームか、あるいはイニシャルにドットが続いたものから成る。name-partは、次のいずれかから成る。personal-partにラストネームと省略可能なjr-part(Jr.、Sr.、または王朝番号)と行末が続いたもの、または、personal-partにname-partが続いたもの(この規則は、複数のファーストネームやミドルネーム、および/またはイニシャルを使う人々の場合に対応する、BNFにおける再帰の使用を示している)。street addressは、省略可能なアパート指定子、続いて番地、続いて街路名から成る。zip-partは、町名、続いてカンマ、続いて州コード、続いてZIPコード、続いて行末から成る」。多くのもの(personal-part、アパート指定子、ZIPコードの形式など)は未規定のまま残されていることに注意。これらは文脈から自明であるか、どこか近くで詳述されていることが前提とされる。parseも参照。

  1. 本来のBNFの数多くの変種や拡張のいずれか。*+といったregexpのワイルドカードの一部または全部を含むことがある。実のところ上の例は、Algol-60報告書のために発明された純粋形ではない。それは[]を使っているが、これは数年後にIBMのPL/I定義で導入されたもので、今では普遍的に認知されている。

  2. science-fiction fandomにおける‘Big-Name Fan’(有名な、または悪名高いファン)。何年も前、あるファンがSF大会で緑地に黒のBNFバッジを配り始めた。これはハッカー連中をひどく混乱させた。