BNFとバッカス記法とは?びーえぬえふ
BNFとバッカス記法とは、BNF(Backus-Naur Form:バッカス・ナウア記法)は、言語の構文規則を「::=」による置き換え規則の集まりとして書き表す記法。左辺の非終端記号を右辺の並びへ置き換えていく形で定義し、右辺に自分自身を書く再帰によって、入れ子や任意の長さの繰返しを有限個の規則で表現する。
最終更新:2026-10-07
高度試験の午前Iを最短で暗記する →背景
「識別子は英字で始まり英数字が続く」と自然言語で説明すると、処理系ごとに解釈が割れて同じプログラムが別の意味になる。ALGOLの仕様策定で、構文を一意に読める規則として書き下す必要が生じたのが出発点で、この形式化があるから構文解析器を規則から機械的に作れる。午前I(科目A-1)では、与えられた規則から生成できる文字列を選ばせる形で出る。
具体例
<符号なし整数> ::= <数字> | <符号なし整数><数字> と定めると、右辺の再帰によって1桁でも100桁でも生成できる。この規則からは「012」は生成できるが、「1.5」や空文字列は生成できない、という判定が規則の適用だけで決まる。
試験での引っ掛け
BNFが決めるのは形(構文)だけで、意味(型の整合や実行結果)は決めない。正規表現と混同しやすいが、括弧の対応のような入れ子は正規表現では書けず、再帰を持つBNFでしか表せない。「::=」の左辺が定義される側、右辺がその内容で、向きを逆に読むと生成できる文字列の判定がすべて裏返る。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。