平成29年春期試験問題 午前Ⅰ 問2

あるプログラム言語において,識別子(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
  

  • <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>→<identifier><digit>

    <identifier><digit><digit>

    <identifier><digit><digit><digit>

    <letter><digit><digit><digit>
    というように展開されますが、先頭以外の文字は必ず数字<digit>になってしまうことになります。
  • 正しい。

Pagetop