あるプログラム言語において,識別子(identifier)は,先頭が英字で始まり,それ以降に任意個の英数字が続く文字列である。これをBNFで定義したとき,aに入るものはどれか。 <digit> ::= 09 <letter> ::= Az <identifier> ::= a
エ. <letter><identifier><letter>
BNFの再帰定義では、無限の繰り返しを止める“終端”がどこかに必要で、識別子の終端(最も短い形)は条件「先頭が英字」を表す<letter>である。識別子は「すでにある識別子の後ろに英字または数字を1つ足す」形で伸ばせるので、<identifier><letter>と<identifier><digit>を加えた選択肢エが正しい。これにより、先頭は必ず<letter>、2文字目以降は英数字が任意個続く文字列を過不足なく定義できる。
ap-2017h29h-a の過去問一覧へ戻る・問4