平成29年度春期 問4 / 80

平成29年度 春期 応用情報技術者試験 午前 問4

あるプログラム言語において,識別子(identifier)は,先頭が英字で始まり,それ以降に任意個の英数字が続く文字列である。これをBNFで定義したとき,aに入るものはどれか。

<digit> ::= 0|1|2|3|4|5|6|7|8|9
<letter> ::= A|B|C|…|X|Y|Z|a|b|c|…|x|y|z
<identifier> ::= [  a  ]

キーボード:1〜4 で解答 → 次の問題 ← 前の問題

正解と解説を見る

正解:エ

識別子の条件は「1文字目は英字」「2文字目以降は英字でも数字でもよい」です。 - まず英字1文字 <letter> は識別子です。 - 識別子の後ろに英字か数字を1文字付け足したものも識別子です(<identifier><letter>,<identifier><digit>)。

この3つを「|」でつなげば,英字で始まり英数字が任意個続く文字列を全て表せます。

  • ア: | | |
    誤り。<digit> 単独も識別子になってしまうため,「1」のような数字で始まる文字列が識別子になってしまいます。

  • イ: | | |
    誤り。<digit> 単独が識別子になるため,数字で始まる文字列が識別子になってしまいます。

  • ウ: |
    誤り。識別子の後ろには数字しか付け足せないため,「ab」のように英字が2文字以上続く識別子を表せません。

  • エ: | |
    正しい。英字1文字から始まり,後ろに数字か英字を何文字でも付け足せるので,定義どおりの識別子を表せます。


答え

エ: | |

出典:平成29年度 春期 応用情報技術者試験 午前 問4

平成29年度春期の他の問題