応用情報暗記無料で始める

BNF(バッカス・ナウア記法)とは?びーえぬえふ

BNF(バッカス・ナウア記法)とは、言語の構文規則を、記号の置き換え規則の集まりとして形式的に定義する記法。左辺の非終端記号を「::=」で定義し、複数の候補を「|」で並べる。自分自身を右辺に含められるため、再帰によって長さに上限のない構造を有限個の規則で表せる。

最終更新:2026-10-06

試験情報

応用情報技術者試験の過去問では3回出題されています(2017年度〜2018年度)。

応用情報技術者試験の頻出用語/テクノロジ系

別名:BNF、バッカス・ナウア記法、バッカス、ナウア記法

この語が出る過去問を解く →

背景

自然言語で書かれた言語仕様は、書いた人と読んだ人で解釈が割れる。処理系ごとに受理する記述が違えば、同じソースが別の環境で通らない。ALGOLの仕様策定でこの問題に直面し、構文を機械が判定できる規則の形へ書き下したのがBNFである。規則がそのまま構文解析器の骨格になるため、コンパイラの前段を規則から生成する道も開けた。

具体例

<数字列> ::= <数字> | <数字列><数字> は、「数字1文字」または「数字列の後ろに数字を1文字続けたもの」を数字列と定義しており、これだけで任意の桁数を表せる。yaccやANTLRといったツールは、この形式に近い規則を入力として構文解析器を自動生成する。

試験での引っ掛け

「::=」の左辺は非終端記号で、「|」は選択肢の区切りであって「かつ」ではない。自分自身を含む再帰的定義が長さ無制限の文字列を生成できる点も見落とされやすい。判定問題では、候補の文字列を規則へ順に当てはめて実際に導出できるか確かめるのが確実で、規則の見た目で選ぶと引っ掛かる。

関連用語

出た過去問

解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。

この語が出る過去問を解く →

試験での特徴
  • 試験では3回出題(2017年度〜2018年度)
  • 分野:テクノロジ系
  • 「::=」の左辺は非終端記号で、「|」は選択肢の区切りであって「かつ」ではない。