平成23年特別試験問題 午前問4
問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
<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
- <letter>|<digit>|<identifier><letter>|<identifier><digit>
- <letter>|<digit>|<letter><identifier>|<identifier><digit>
- <letter>|<identifier><digit>
- <letter>|<identifier><digit>|<identifier><letter>
広告
解説
- 2つ目の項に<digit>があり、先頭が数字で始まる場合があるので誤りです。
例えば、<identifier>のように、先頭が数字で始まる文字列が使用可能になってしまいます。
↓
<identifier><letter>
↓
<digit><letter> - 「ア」と同じ理由で誤りです。
- 英字が先頭にしか使えないので誤りです。
例えば、<identifier>というように展開されますが、先頭以外の文字は、必ず数字<digit>になってしまうことになります。
↓
<identifier><digit>
↓
<identifier><digit><digit>
↓
<identifier><digit><digit><digit>
↓
<letter><digit><digit><digit> - 正しい。
広告