【問題】
次のBNFにおいて非終端記号Aから生成される文字列はどれか。
R0 = 0 | 3 | 6 | 9
R1 = 1 | 4 | 7
R2 = 2 | 5 | 8
A ::= <R0> | <A><R0> | <B><R2> | <C><R1>
B ::= <R1> | <A><R1> | <B><R0> | <C><R2>
C ::= <R2> | <A><R2> | <B><R1> | <C><R0>
ア.123 イ.124 ウ.127 エ.128
【解答】
「12」から始まり、なおかつ生成できる文字列を考えれば良い。
とすると、1はR1であり、2はR2である必要があるから、<R1><R2>は必須になる。
さらに3文字であるから、<R1><R2><Rx>と考えられる。
さらに、「Aから生成される」とあるから、順に考えると、
A → <A><R0> は
<A><R0> → <B><R2><R0> のみが考えられ、
<B><R2><R0> → <R1><R2><R0> のみが考えられる。
よって、作られるのは、「120」「123」「126」「129」のどれかであり、満たすのはアのみである。
なお、A → <B><R2> を考えると、
<B><R2> → <C><R2><R2> → <R2><R2><R2> のみが考えられるが、<R1><R2><Rx>を生成できないため、不適切となる。
同様に、A → <C><R1> を考えると、
<C><R1> → <A><R2><R1> → <R0><R2><R1> のみが考えられるが、やはり<R1><R2><Rx>を生成できないため、不適切となる。