次に示す記述は、BNFで表現されたあるプログラム言語の構文の一部である。
<パラメータ指定>として、正しいものはどれか。
<パラメータ指定> ::= <パラメータ> | (<パラメータ指定>, <パラメータ>)
<パラメータ> ::= <英字> | <パラメータ><英字>
<英字> ::= a | b | c | d | e | f | g | h | i
ア | ((abc, def), ghi) |
イ | ((abc, def)) |
ウ | (abc, (def)) |
エ | (abc) |
答え ア
【解説】
<パラメータ>について見ると
<パラメータ> ::= <英字> | <パラメータ><英字>
なので、<パラメータ>は“英字列”である。
次に、<パラメータ指定>は
<パラメータ指定> ::= <パラメータ> | (<パラメータ指定>, <パラメータ>)
なので、<パラメータ指定>は
英字列
(英字列, 英字列)
((英字列, 英字列), 英字列)
(((英字列, 英字列), 英字列), 英字列)
…
である。
したがって、選択肢でこれに一致するのは((abc, def), ghi)(ア)のである。
イ | <パラメータ指定>は“(英字列, (英字列))”にはならない。 |
ウ | <パラメータ指定>は“((英字列, 英字列))”にはならない。 |
エ | <パラメータ指定>は“(英字列)”にはならない。 |
【キーワード】
・BNF