情報処理安全確保支援士平成29年春期 午前Ⅰ 問2

問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>
  • [出典]
  • 応用情報技術者
    平成29年春期 問4と同題

分類

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

正解

解説

  • 2つ目の項に<digit>があり、先頭が数字で始まる場合があるので誤りです。
    例えば、
    <identifier>

    <identifier><letter>

    <digit><letter>
    のように、先頭が数字で始まる文字列が使用可能になってしまいます。
  • 「ア」と同じ理由で誤りです。
  • 英字が先頭にしか使えないので誤りです。
    例えば、
    <identifier>→<identifier><digit>

    <identifier><digit><digit>

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

    <letter><digit><digit><digit>
    というように展開されますが、先頭以外の文字は必ず数字<digit>になってしまうことになります。
  • 正しい。
© 2014-2024 情報処理安全確保支援士ドットコム All Rights Reserved.

Pagetop