令和元年度(再試験) III-6

科目: 専門科目 / 分野: 情報工学部門 / 年度: 令和元年度(再試験)

III-6 問題画像

出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」

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、生成規則、構文解析、文法、非終端記号、終端記号、形式言語、情報工学部門