平成28年度 技術士第一次試験問題【専門科目】
【16】情報工学部門
V−4
次のようなBNFで定義された文法を考える。
 <S> :: = <A><B>
 <A> :: = a | a<A>
 <B> :: = b | b<B> | c | c<B>

ここで、< > で囲まれたものは非終端記号、英小文字1文字は終端記号とし、
開始記号を <S> とする。この文法により生成される文を正規表現で表したものは
どれか。ただし、正規表現において * は直前のものの0回以上の繰り返しを表す。
 | は選択を表すものとする。

 @ a*b*c
 A a*(b | c)*
 B aa*(bb* | cc*)
 C aa*(bc)(bc)*
 D aa*(b | c)(b | c)*



【正解】 D
@ a * b * c * の正規表現では、 例えば a が0回、すなわち aがなくてもよいが、
 BNFでは、<S> :: = <A><B> つまり、 (a | a<A>)<B>により、
 a が少なくとも1つ以上は現れなければならない。
A@と同様であり、誤り。
BBNFでは、例えば abc が表現可能であるが、正規表現では生成できない。
CBNFでは、例えば abb や acc が表現可能であるが、正規表現では
 生成できない。
D正しい。

EXCELのマクロのご相談なら ファーストマクロ 



V−3 目次 V−5
ファーストマクロ TOPページ