BNFとバッカス記法とは?びーえぬえふ
BNFとバッカス記法とは、言語の構文規則を、非終端記号を置き換える再帰的な規則の集合として厳密に定義する記法。::= の左辺に定義される記号、右辺にその内容を書き、| で選択肢を並べる。文脈自由文法を書き下す標準形式であり、コンパイラや機器コマンドの構文解析器を設計する根拠になる。
最終更新:2026-10-06
エンベデッドSPを最短で暗記・合格する →背景
自然言語で書かれた文法説明は、読み手ごとに解釈が割れる。複数の会社が同じ仕様から処理系を実装したときに受理する文字列が食い違うのは、この曖昧さが原因である。規則を機械が読める形で厳密に書き下せば、解釈の余地も、構文解析器を手書きする必要も消える。機器のコマンド体系を仕様書の散文だけで決めると、ホスト側とファーム側で受理範囲がずれるのと同じ問題である。
具体例
<数字列> ::= <数字> | <数字><数字列> と書けば、数字列が1桁の数字か、数字に数字列が続いたものであると再帰的に定義できる。ATコマンドやSCPI、NMEAといった機器のコマンド構文も同じ形で規定でき、yacc系のツールに与えれば構文解析器がそのまま生成される。
試験での引っ掛け
BNFが定義するのは構文(形)だけで、意味は定義しない。形として正しくても意味が通らない文は書ける。正規表現との取り違えも定番で、正規表現は括弧の対応のような入れ子を表現できないが、BNFは再帰的に定義できるので表現できる。::= の左辺が定義される非終端記号、右辺がその中身であり、向きを逆に読まないこと。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。