【問題】
あるプログラムにおいて、識別子(identifier)は、先頭が英字で始まり、それ以降に任意個の英数字が続く文字列である。これをBNFで定義した時、aに入るものはどれか。
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<letter> ::= A | B | C | … | x | y | z
<idenfier> ::= a
ア.<letter> | <digit> | <identifier><letter> | <identifer><digit>
イ.<letter> | <digit> | <letter><identifier> | <identifier><digit>
ウ.<letter> | <identifer><digit>
エ.<letter> | <identifier><digit> | <identifier><letter>
【解答】
「先頭が英字で始まる」という制限があるから、先頭に数字を入れることの出来るアとイは誤答であることが分かる。
さらに、「任意個の英数字が続く」という制限に対して、ウは数字を組み込んだ場合に、<identifier><identifier><digit>となり、最後の文字が数字に限定されるため、誤答であることが分かる。
よって、消去法で、エが解答となる。