平成30年度 秋期 応用情報技術者試験 午前 問4
テクノロジ/基礎理論次に示す記述は,BNFで表現されたあるプログラム言語の構文の一部である。<パラメタ指定>として,適切なものはどれか。 <パラメタ指定> ::= <パラメタ>|(<パラメタ指定>,<パラメタ>) <パラメタ> ::= <英字>|<パラメタ><英字> <英字> ::= a|b|c|d|e|f|g|h|i
出典:平成30年度 秋期 応用情報技術者試験 午前 問4
- ア((abc, def), ghi)
- イ((abc, def))
- ウ(abc, (def))
- エ(abc)
正解:ア
解説
<パラメタ>は英字の並び(1文字以上の文字列)を表し,<パラメタ指定>はそれ単体か,または「(<パラメタ指定>,<パラメタ>)」という再帰的な括弧形式のいずれかです。この再帰規則を使うと,パラメタ指定同士を入れ子にした「((abc, def), ghi)」のような形も導出できます。
選択肢ごとの解説
- ア正しい。(abc, def)は<パラメタ指定>であり,これと<パラメタ>ghiを組み合わせた((abc, def), ghi)は,再帰規則によって導出できる<パラメタ指定>です。
- イ誤り。((abc, def))は外側の括弧の中に<パラメタ指定>と<パラメタ>をコンマで区切る構造がなく,構文規則に合致しません。
- ウ誤り。(abc, (def))は,2番目の要素が<パラメタ>(英字の並び)ではなく括弧付きの<パラメタ指定>になっており,規則に合致しません。
- エ誤り。(abc)は,かっこの中がコンマ区切りの<パラメタ指定>,<パラメタ>の形になっておらず,規則に合致しません。