必ず受かる情報処理技術者試験

当サイトは、情報処理技術者試験に合格するためのWebサイトです。
ITパスポート試験,基本情報技術者,応用情報技術者,高度試験の過去問題と解答及び詳細な解説を掲載しています。
  1. トップページ
  2. 応用情報技術者
  3. 平成29年度春季問題一覧
  4. 平成29年度春季問題4-解答・解説-分析

平成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  

<letter> | <digit> | <identifier><letter> | <identifier><digit>
<letter> | <digit> | <letter><identifier> | <identifier><digit>
<letter> | <identifier><digit>
<letter> | <identifier><digit> | <identifier><letter>

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

解答:エ

<解説>

BNF(バッカス・ナウア記法)とは、文脈自由文法を定義するのに用いられるメタ言語のことで、一般にBNFやBN記法と略される。
BNFでは、「<identifier>::=」はidentifier を定義するという意味で、「|」は、「または」を意味する。

これより

  1. <digit>は0~9のいずれか1文字である。
  2. <leter>はA~Zのいずれか1文字である。

事が分かる。

× "1AB"のような先頭が数字の文字列が許されてしまう。
× "1AB"のような先頭が数字の文字列が許されてしまう。
× ”AB123XYZ”のような最後の文字が英字のデータが許されない。
正しい。