BNFとは?びーえぬえふ
BNFとは、プログラミング言語などの文法規則を形式的に定義するための記法。「::=」で「〜と定義する」を表し、規則の中でその規則自身を再び使う(再帰的に組み合わせる)ことで、言語の構文を厳密に表現する。
最終更新:2026-10-10
この語が出る過去問を解く →背景
言語の文法を日本語の文章で説明すると、読む人によって解釈が分かれ、言語を作る側と使う側で食い違いが起きる。規則を記号で厳密に書く記法があれば、ある文が正しいかを機械的に判定でき、言語の仕様を一通りにしか読めない形で伝えられる。その記法がBNFである。
具体例
<数字> ::= 0|1|2|...|9 のように定義しておけば、「数字とは0から9のいずれか」という規則を曖昧さなく表現できる。プログラミング言語の仕様書などで使われる。
試験での引っ掛け
文法(書き方の規則)を定義する記法であり、プログラムの処理手順や動作を表すものではない。「::=」は「等しい」ではなく「〜と定義する」の意味。流れ図やUMLと役割を取り違えやすい。
関連用語
出た過去問
出典:令和元年度 秋期 基本情報技術者試験 午前 問7(IPA)
次のBNFで定義される<変数名>に合致するものはどれか。 <数字>::=0|1|2|3|4|5|6|7|8|9 <英字>::=A|B|C|D|E|F <英数字>…
正解:F5_1
要点:BNFの再帰定義は「先頭要素」と「繰り返し可能な要素」を分けて読む
この定義では<変数名>は必ず<英字>(A〜F)から始まり、2文字目以降は<英数字>(A〜F、0〜9、アンダースコア)を何文字でも続けられる再帰構造になっている。したがって「先頭が A〜F のいずれか」「2文字目以降は A〜F・数字・アンダースコアのみ」という2条件を同時に満たす文字列だけが合致する。先頭が英字 F で、以降が数字・アンダースコア・数字である文字列がこれを満たす。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。