非エンジニアのエンジニア道

非エンジニアからエンジニアに転向!その勉強の軌跡を載せていきます。

BNFとは

読めるように勉強。
やってくうちにパズルみたいで、ちょっとおもしろくなってきた!

BNFとは

Backus Naur Form バッカス・ナウア記法
ジョン・バッカスさんとピーター・ナウアさんが考案。
…名前のままでした。

コンピュータが扱う言語の文法を定義する際に用いられるメタ言語の一つ。
BNFを拡張(Extended)したEBNFが現在一般的。

基本

生成規則
「左辺 ::= 右辺」
非終端記号
「<」と「>」で囲まれたも
終端記号
「0」や「1」のように、新しい記号を生成しないもの。終端記号は実際のソースコードで使用できる記号。
<hoge> ::= <hogehoge>
hoge は hogehoge である

<数字>  ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" 
<非ゼロ数字> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" 
<符号なし整数> ::= <非ゼロ数字> | <符号なし整数><数字>

拡張
<符号なし整数> ::= <非ゼロ数字>{<数字>}

よく見る文字の意味

表記 意味
選択(どれか)
[] オプション(あってもなくても)
{} 0回以上の繰り返し)
() グループ化(単一の要素とする)