応用情報技術者試験 平成30年度秋期 午前 問4「次に示す記述は,BNF で表現されたあるプログラム言語の構文の一部である。<パラ…」の正解と解説です。応用情報技術者試験の「テクノロジ系」分野の過去問で、これまでの受験者の正答率は約65%です。
正解
ア. ((abc, def), ghi)
正答率 64.7%(1,168人中 756人が正解)
問題の解説
BNFは「::=」で左辺を右辺に置換できる規則で、「|」は「または」を表す。<パラメタ>はa〜iの英字を1個以上連ねたもの(再帰定義により英字の並び)で、<パラメタ指定>は「<パラメタ>」単体か、または「(<パラメタ指定>,<パラメタ>)」という形(カッコで囲み、コンマの左に<パラメタ指定>・右に<パラメタ>を置く)に限られる。各選択肢をこの規則で生成できるか検証し、生成可能なアが正解。
選択肢ごとの解説
- ( (abc,def) , ghi ) の形で、外側は「(<パラメタ指定>,<パラメタ>)」、内側(abc,def)も同じ規則で生成でき、ghiは<パラメタ>。規則どおりに導出できるため正解。
- ((abc, def) は開きカッコの数と閉じカッコの数が合わず、「(…)」の対応が取れない。<パラメタ指定>の規則ではカッコは必ず対で現れるため生成できず誤り。
- (abc, (def)) は、コンマの右側に置けるのは<パラメタ>(英字の並び)だけなのに、右側が (def) というカッコ付きの形になっている。規則に反するため誤り。
- (abc) はカッコの中身が<パラメタ>単体でコンマが無い。<パラメタ指定>でカッコを使う形は必ず「(<パラメタ指定>,<パラメタ>)」とコンマを含む必要があるため生成できず誤り。
応用情報技術者試験 平成30年度秋期 午前 の過去問一覧に戻る・問4