平成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」について調べてみよう。

戻る 一覧へ 次へ