令和元年秋期試験問題 午前問7
問7解説へ
次のBNFで定義される<変数名>に合致するものはどれか。
<数字>::= 0|1|2|3|4|5|6|7|8|9
<英字>::= A|B|C|D|E|F
<英数字>::=<英字>|<数字>|_
<変数名>::=<英字>|<変数名><英数字>
<数字>::= 0|1|2|3|4|5|6|7|8|9
<英字>::= A|B|C|D|E|F
<英数字>::=<英字>|<数字>|_
<変数名>::=<英字>|<変数名><英数字>
- _B39
- 246
- 3E5
- F5_1
広告
解説
BNF(Backus-Naur Form)は、バッカス・ナウア記法とも呼ばれ、XMLをはじめ多くのプログラム言語の構文定義に用いられている記法です。
BNFで使われている各記号は、「::=」が左辺と右辺の区切り、「|」がor(または)、「<>」は非終端記号を表しています。それぞれのBNFは次のように解釈することができます。
<変数名>は<英字>1文字、または<変数名>の後ろに<英数字>が付いたもの
解答群は、前者ではないため、後者でしかない。
<変数名>の後ろに<英数字>が付いたもの
↓
(<変数名>の後ろに<英数字>が付いたもの)の後ろに<英数字>が付いたもの
↓
((<変数名>の後ろに<英数字>が付いたもの)の後ろに<英数字>が付いたもの)の後ろに<英数字>が付いたもの
↓
・・・
つまり
<変数名>の後ろに<英数字>が一つ以上付いたもの
つまり
<英字>1文字の後ろに<英数字>が一つ以上付いたもの
英字から始まっている文字列は「エ」しかないので、すぐに正解がわかります。
BNFで使われている各記号は、「::=」が左辺と右辺の区切り、「|」がor(または)、「<>」は非終端記号を表しています。それぞれのBNFは次のように解釈することができます。
- <数字>
- 1~9までの1文字
- <英字>
- A~Fまでの1文字
- <英数字>
- <数字>または<英字>または"_"
- <変数名>
- <英字>1文字、または<変数名>の後ろに<英数字>が付いたもの
- _B39
↓
<英数字><英字><数字><数字>
↓
<英数字><英字><英数字><英数字>
↓
<英数字><変数名><英数字>
↓
<英数字><変数名>
先頭文字が"_"なので<変数名>には合致しません。 - 246
↓
<数字><数字><数字>
↓
<英数字><英数字><英数字>
<変数名>に置き換えられる部分はありません。 - 3E5
↓
<数字><英字><数字>
↓
<数字><英字><英数字>
↓
<英数字><変数名>
先頭文字が<数字>なので<変数名>には合致しません。 - F5_1
↓
<英字><数字><英数字><数字>
↓
<英字><英数字><英数字><英数字>
↓
<変数名><英数字><英数字>
↓
<変数名><英数字>
↓
<変数名>
最終的に<変数名>に置き換え可能なので、BNFに合致する文字列となります。よって正解です。
<変数名>は<英字>1文字、または<変数名>の後ろに<英数字>が付いたもの
解答群は、前者ではないため、後者でしかない。
<変数名>の後ろに<英数字>が付いたもの
↓
(<変数名>の後ろに<英数字>が付いたもの)の後ろに<英数字>が付いたもの
↓
((<変数名>の後ろに<英数字>が付いたもの)の後ろに<英数字>が付いたもの)の後ろに<英数字>が付いたもの
↓
・・・
つまり
<変数名>の後ろに<英数字>が一つ以上付いたもの
つまり
<英字>1文字の後ろに<英数字>が一つ以上付いたもの
英字から始まっている文字列は「エ」しかないので、すぐに正解がわかります。
広告