あるプログラム言語において,識別子(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テクノロジ系
あるプログラム言語において,識別子(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正解 エ
識別子は英字1文字から始め、後ろに英字か数字を1文字ずつ付け足して作れるので、<letter> | <identifier><digit> | <identifier><letter>と定義します。
BNF(Backus-Naur Form)では、左辺の記号を右辺で再帰的に使うと「任意個の繰返し」を表せます。<letter>は、英字1文字が識別子であることを表します。<identifier><digit>と<identifier><letter>は、識別子の後ろに数字や英字を付けたものも識別子であることを表します。例えば「a1b」は、a→a1→a1bの順に作れます。先頭は必ず<letter>から始まるので、数字で始まる文字列は作れません。
ア:選択肢の中に<digit>単独があるため、「1」や「12」のように数字で始まる文字列も識別子になってしまいます。
イ:<digit>単独を含むため、数字で始まる文字列も識別子になります。さらに<letter><identifier>によって「a1」の前に英字を付けられますが、数字始まりを排除できません。
ウ:識別子の後ろに付けられるのが数字だけなので、「ab」のように2文字目以降に英字を含む文字列を作れません。
出典:平成29年度 春期 応用情報技術者試験 問4
全年度から出題。10問で実力を判定します。登録不要。
出典:平成29年度 春期 応用情報技術者試験 問4(独立行政法人情報処理推進機構)
解説と用語ページは生成 AI が書き、別の生成 AI が確かめています。作り方