BNFとバッカス記法とは?びーえぬえふ
BNFとバッカス記法とは、プログラム言語や通信プロトコルの構文規則を、置き換え規則の集まりとして厳密に定義する記法。「::=」で定義し、「|」で選択肢を表し、自分自身を規則の中で使う(再帰)ことで入れ子構造も表現できる。運用の場面で直接書くことは少ないが、ログや設定ファイルの書式が仕様書でこの形で定義されているため、監視の抽出条件や解析スクリプトが取りこぼす境界条件を読むときに効く。
最終更新:2026-10-06
ITサービスマネージャを最短で暗記・合格する →背景
「日付の後ろにスペースを空けてホスト名」といった自然言語の説明は、書いた人と読んだ人で解釈が割れる。とくに省略可能な項目や繰り返しの扱いは、文章では曖昧さが残る。規則の形に落として機械的に判定できるようにしたのがBNFで、これによりコンパイラも、ログを解析するツールも、同じ定義から実装できる。運用にとっての意味は、仕様書のこの部分を読めば、自作の抽出条件が想定外の行で外れる箇所を事前に潰せることにある。
具体例
<数字列> ::= <数字> | <数字><数字列> と定義すれば、数字列は1桁の数字か、数字に数字列が続いたもの、という再帰で表せる。実務では、電子メールのアドレス形式を定めた RFC 5322 や syslog のメッセージ形式を定めた RFC 5424 がこの記法(ABNF)で書かれており、監視でログを正規表現により抽出する際、どこまでが省略可能な項目かをここで確認できる。
試験での引っ掛け
BNFが定義するのは構文(形)だけで、意味は定義しない——形式上正しいログ行が業務的に正しいとは限らない。正規表現との取り違えも定番で、正規表現では括弧の対応のような入れ子構造を表現できないが、BNFは再帰的に定義できるため表現できる。::= の左辺が定義される側(非終端記号)、右辺がその中身であり、向きを逆に読むと選択肢の正誤が反転する。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。