応用情報技術者試験 応用情報技術者試験 平成30年度秋期 午前4: 次に示す記述は,BNF で表現されたあるプログラム言語の構文の一部である。<パラメタ指定> として,適切なものはどれか。 <パラメタ指定> ::= <パラメタ>

応用情報技術者試験 平成30年度秋期 午前
Q 44 / 80
次に示す記述は, で表現されたあるプログラム言語の構文の一部である。<パラメタ指定> として,適切なものはどれか。 <パラメタ指定> ::= <パラメタ> | (<パラメタ指定>,<パラメタ>) <パラメタ> ::= <英字> | <パラメタ><英字> <英字> ::= a | b | c | d | e | f | g | h | i
この問の正解率:64.78%(1,167件)

問題本文

次に示す記述は,BNF で表現されたあるプログラム言語の構文の一部である。<パラメタ指定> として,適切なものはどれか。 <パラメタ指定> ::= <パラメタ> | (<パラメタ指定>,<パラメタ>) <パラメタ> ::= <英字> | <パラメタ><英字> <英字> ::= a i

選択肢

  • .((abc, def), ghi)
  • .((abc, def)
  • .(abc, (def))
  • .(abc)

正解

. ((abc, def), ghi)

解説

BNFは「::=」で左辺を右辺に置換できる規則で、「|」は「または」を表す。<パラメタ>はa〜iの英字を1個以上連ねたもの(再帰定義により英字の並び)で、<パラメタ指定>は「<パラメタ>」単体か、または「(<パラメタ指定>,<パラメタ>)」という形(カッコで囲み、コンマの左に<パラメタ指定>・右に<パラメタ>を置く)に限られる。各選択肢をこの規則で生成できるか検証し、生成可能なアが正解。

選択肢ごとの解説

  • .( (abc,def) , ghi ) の形で、外側は「(<パラメタ指定>,<パラメタ>)」、内側(abc,def)も同じ規則で生成でき、ghiは<パラメタ>。規則どおりに導出できるため正解。
  • .((abc, def) は開きカッコの数と閉じカッコの数が合わず、「(…)」の対応が取れない。<パラメタ指定>の規則ではカッコは必ず対で現れるため生成できず誤り。
  • .(abc, (def)) は、コンマの右側に置けるのは<パラメタ>(英字の並び)だけなのに、右側が (def) というカッコ付きの形になっている。規則に反するため誤り。
  • .(abc) はカッコの中身が<パラメタ>単体でコンマが無い。<パラメタ指定>でカッコを使う形は必ず「(<パラメタ指定>,<パラメタ>)」とコンマを含む必要があるため生成できず誤り。

応用情報技術者試験 平成30年度秋期 午前過去問一覧へ戻る・問4