
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
BNFで定義された生成規則(S、T、Fの文法)から導出できない式(最も不適切なもの)を選ぶ問題。四則演算の式の構文を、生成規則に当てはめて判定する。
BNFの生成規則に従って、各式が導出可能かを調べる問題。
① 文法の形を確かめる: 「+」と「*」は右側に同じ記号(<S>、<T>)が来るので何度でも続けられる。「−」と「/」は両側が<T>・<F>なので1回しか使えない
② x/2/3 は「/」が2回続き、<F>"/"<F> では作れない。1+2−3 は「−」が1回なので作れる
③ ③
規則は、<S>::=<T>"+"<S>|<T>"−"<T>|<T>、<T>::=<F>"*"<T>|<F>"/"<F>|<F>、<F>::="1"|"2"|"3"|"x"|"("<S>")"である。<T>の除算の規則は、<F>"/"<F>だけで、右辺が<F>1つに限られ、「/」を連続して使う形(x/2/3)は導出できない。したがって、1+x/2/3を含む③が導出できず、最も不適切である。
BNFの導出では、各非終端記号に許される右辺の形を厳密に当てはめる。この文法では、乗算は右結合に連続できるが、除算と減算は連続できない。
キーワード: BNF、生成規則、構文解析、文法、非終端記号、終端記号、形式言語、情報工学部門