平成23年 秋期 基本情報技術者 午前 問4

次の規則から生成することができる式はどれか。

[規則]
 <式> ::= <変数> | (<式> + <式>) | <式> * <式>
 <変数> ::= A | B | C | D

 ア  A + (B + C) * D  イ  (A + B) + (C + D)
 ウ  (A + B) * (C + D)  エ  (A * B) + (C * D)


答え ウ


解説
規則の“<式> ::= <変数> | (<式> + <式>) | <式> * <式>”の『(<式> + <式>)』から、加算(足し算)の式は必ず括弧で括られる。また、『<式> * <式>』から乗算(掛け算)の式は括弧で括られないことがわかるので、選択肢の式でこれを満たしているのはウの(A + B) * (C + D)のみである。


キーワード
・BNF

キーワードの解説
  • BNF(Backus Naur Form、バッカス記法、バッカス・ナウア記法)
    コンピュータで扱う言語を定義するための記述方法(メタ言語の記述方法)であり、メタ言語の多くはBNFで記述される。
    マークアップ言語として使われるXMLも、BNFで定義されている。
    問題の「<変数> ::= A | B | C | D」は変数“A”か“B”か“C”か“D”かのいずれかであることを意味しています。
    また、「<式> ::= <変数> | (<式> + <式>) | <式> * <式>」のように自分自身を再帰的に定義することもできます。

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

戻る 一覧へ 次へ