あるプログラム言語において,識別子(identifier)は,先頭が英字で始まり,それ以降に任意個の英数字が続く文字列である。これを BNF で定義したとき,【 a 】 に入るものはどれか。
<digit>::=0|1|2|3|4|5|6|7|8|9 | |
<leter>::=A|B|C|…|X|Y|Z|a|b|c|…|x|y|z | |
<identifier>::= 【 a 】 |
ア | <leter>|<digit>|<identifier><leter>|<identifier><digit> |
イ | <leter>|<digit>|<leter><identifier>|<identifier><digit> |
ウ | <leter>|<identifier><digit> |
エ | <leter>|<identifier><digit>|<identifier><leter> |
BNF(バッカス・ナウア記法)とは、文脈自由文法を定義するのに用いられるメタ言語のことで、一般にBNFやBN記法と略される。
BNFでは、「<identifier>::=」はidentifier を定義するという意味で、「|」は、「または」を意味する。
これより
事が分かる。
ア | × | "1AB"のような先頭が数字の文字列が許されてしまう。 |
イ | × | "1AB"のような先頭が数字の文字列が許されてしまう。 |
ウ | × | ”AB123XYZ”のような最後の文字が英字のデータが許されない。 |
エ | ○ | 正しい。 |