Form:バッカス記法)とは、プログラム言語の文法を示す記法の一種である。アメリカの計算機科学者バッカス(J.W.Backus)が、Alogol60の構文規則のために提唱した記法である。文字の並び方の規則を文字で定義し、反復や選択なども適当な文字記号で表現する。文字だけで定義するので、簡潔に表現でき、最終的な分の記述形式に近い表現になる。この記法は文脈自由文法と同等の記述能力を持つ。同じ左辺に対する右辺の対応を区切り記号で区切りながら、すべて並べていく。非終端記号は「<」と「>」で囲む。記号「::==」が左辺と右辺の区切りを表す。右辺の中での区切りとして「|」が「または」の意味で使われる。†あるプログラム言語の数値に関する構文がBNFで次のように定義されているとき、<数値>として扱われるものを選べ。<数値>::==<数字列>|<符号><数字列>|<数字列>.<数字列><数字列>::==<数字>|<数字列><数字><数字>::==0|1|2|3|4|5|6|7|8|9<符号>::==+|-<数値>として扱われる例12−12.012.0+0<数値>として扱われない例1.2E+1指数を表していると思われるEが未定義なので、数値としては認められない。12.「<数字列>.<数字列>」という定義なので、ピリオドの前と後ろにも数字列が必要である。.5「<数字列>.<数字列>」という定義なので、ピリオドの前と後ろにも数字列が必要である。+-1符号が付く場合は「<符号><数字列>」という定義から、符号が連続することはありえない。次のBNF形式で示された構文規則を満たすものを選べ【H7年PE午前問17】。<算術式>::==<項>|<算術式><加減演算子><項><加減演算子>::==+|−<項>::==<因子>|<項><乗除演算子><因子><乗除演算子>::==*|/<因子>::==<定数>|<変数>|(<算術式>)<変数>::==x|y|z<定数>::==5|10|12算術式を満たす例x*(y+z)+yy*x-z/x+12算術式を満たさない例x+log(y+10)logは変数として定義されていない。y+10/xzxzという変数の連続は許されていない。−x+y/z*5戦闘の加減演算子は許されていない。次のBNFで示された構文規則で、式となるものを選べ【H9年PE午前問75】。<式>::==<項>|<式>+<項><項>::==<因子|(-<因子>)|<項><因子><因子>::==0|1|(<式>)式を満たす例1((-1))+0式を満たさない例(-10)<式>→<項>→<項><因子>→<因子><因子>だから10はありえる。(-10)になるには、(-<因子>)であって欲しいが、定義からすると(-<式>)や(-<項>)でなければならない。−(1+0)マイナスは必ず括弧の中にあるはずだから、これは満たさない。(1-1)「<因子>-<因子>」は、構文規則を満たさない。拡張BNF(4615d)。