基本情報技術者令和元年秋期 午前問7

午前問7

次のBNFで定義される<変数名>に合致するものはどれか。

 <数字>::= 0|1|2|3|4|5|6|7|8|9
 <英字>::= A|B|C|D|E|F
 <英数字>::=<英字>|<数字>|_
 <変数名>::=<英字>|<変数名><英数字>

分類

テクノロジ系 » 基礎理論 » 情報に関する理論

正解

解説

BNF(Backus-Naur Form)は、バッカス・ナウア記法とも呼ばれ、XMLをはじめ多くのプログラム言語の構文定義に用いられている記法です。

BNFで使われている各記号は、「::=」が左辺と右辺の区切り、「|」がor(または)、「<>」は非終端記号を表しています。それぞれのBNFは次のように解釈することができます。
<数字>
1〜9までの1文字
<英字>
A〜Fまでの1文字
<英数字>
<数字>または<英字>または"_"
<変数名>
<英字>1文字、または<変数名>の後ろに<英数字>が付いたもの
ある文字列が特定の非終端記号に合致するかどうかを判断する場合、文字を非終端記号に置き換えることを繰り返して、最終的に目的の非終端記号(本問では<変数名>)の形になるかを考えていきます。
  • _B39

    <英数字><英字><数字><数字>

    <英数字><英字><英数字><英数字>

    <英数字><変数名><英数字>

    <英数字><変数名>

    先頭文字が"_"なので<変数名>には合致しません。
  • 246

    <数字><数字><数字>

    <英数字><英数字><英数字>

    <変数名>に置き換えられる部分はありません。
  • 3E5

    <数字><英字><数字>

    <数字><英字><英数字>

    <英数字><変数名>

    先頭文字が<数字>なので<変数名>には合致しません。
  • F5_1

    <英字><数字><英数字><数字>

    <英字><英数字><英数字><英数字>

    <変数名><英数字><英数字>

    <変数名><英数字>

    <変数名>

    最終的に<変数名>に置き換え可能なので、BNFに合致する文字列となります。よって正解です。
【別解】
<変数名>は<英字>1文字、または<変数名>の後ろに<英数字>が付いたもの
解答群は、前者ではないため、後者でしかない。
<変数名>の後ろに<英数字>が付いたもの

(<変数名>の後ろに<英数字>が付いたもの)の後ろに<英数字>が付いたもの

((<変数名>の後ろに<英数字>が付いたもの)の後ろに<英数字>が付いたもの)の後ろに<英数字>が付いたもの

・・・
つまり
<変数名>の後ろに<英数字>が一つ以上付いたもの
つまり
<英字>1文字の後ろに<英数字>が一つ以上付いたもの

英字から始まっている文字列は「エ」しかないので、すぐに正解がわかります。
© 2010-2020 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop