あるプログラム言語において、識別子(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> |
答え エ
【解説】
ア |
この定義では2つ目の項に<digit>があるので、先頭の1文字目として数字が来る場合があるので間違いです。 |
イ |
この定義では2つ目の項に<digit>があるので、先頭の1文字目として数字が来る場合があるので間違いです。 |
ウ |
この定義では、2文字目以降に英字が来ることがないので間違いです。 |
エ |
この定義は、最初の項の<letter>で先頭1文字目の英字を定義し、2項目・3項目の<identifier><digit> | <identifier><letter>で2文字目以降が任意の長さの英字・数字を定義している。 |
【キーワード】
・BNF
【キーワードの解説】
- BNF(Backus Naur Form、BN記法)
コンピュータが扱う言語を定義するための言語(メタ言語)の一種で、コンピュータの中では最もよく使われている。
OR( | )と再帰による繰り返しを使うことで定義していることが特徴であり、単純な定義から複雑な定義を構造的に作ることが可能である。
もっと、「BNF」について調べてみよう。
戻る
一覧へ
次へ
|