平成30年 秋期 応用情報技術者 午前 問4

次に示す記述は、BNFで表現されたあるプログラム言語の構文の一部である。
<パラメータ指定>として、正しいものはどれか。

 <パラメータ指定> ::= <パラメータ> | (<パラメータ指定>, <パラメータ>)
 <パラメータ> ::= <英字> | <パラメータ><英字>
 <英字> ::= a | b | c | d | e | f | g | h | i

 ア  ((abc, def), ghi)  イ  ((abc, def))
 ウ  (abc, (def))  エ  (abc)


答え ア


解説
<パラメータ>について見ると
 <パラメータ> ::= <英字> | <パラメータ><英字>
なので、<パラメータ>は“英字列”である。
次に、<パラメータ指定>は
 <パラメータ指定> ::= <パラメータ> | (<パラメータ指定>, <パラメータ>)
なので、<パラメータ指定>は
 英字列
 (英字列, 英字列)
 ((英字列, 英字列), 英字列)
 (((英字列, 英字列), 英字列), 英字列)
 …
である。
したがって、選択肢でこれに一致するのは((abc, def), ghi)(ア)のである。

 イ  <パラメータ指定>は“(英字列, (英字列))”にはならない。
 ウ  <パラメータ指定>は“((英字列, 英字列))”にはならない。
 エ  <パラメータ指定>は“(英字列)”にはならない。


キーワード
・BNF

キーワードの解説
  • BNF(Backus Naur Form、BN記法)
    コンピュータが扱う言語を定義するための言語(メタ言語)の一種で、コンピュータの中では最もよく使われている。
    OR( | )と再帰による繰り返しを使うことで定義していることが特徴であり、単純な定義から複雑な定義を構造的に作ることが可能である。

もっと、「BNF」について調べてみよう。

戻る 一覧へ 次へ