なぜ、アが正解になるのか。
どなたかわかりやすく教えていただけませんでしょうか。
[問題]
次の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
[正解]
ア
よろしくお願いいたします。
一応ステップを追って説明を書いてみました。
まずすべての選択肢の最初の最初の2文字は12ですから、この文字列を
12?
とすると終端記号を使用して
<R1><R2><??>
と表せます(<??> は <R0>、<R1>、<R2>のいずれか)。
ここで<R1>を終端として持つのは<B>ですからこの形は
<B><R2><??>になります。
ここで定義より
<B><R2> は <A> ですから、当初の形は
<A>::=<A><??>に帰着します
この形を満たすのは<A><R0>だけですので、<??>は <R0> となります。
ですから回答の3番目の文字は<R0>であり、これを満たす回答はアしか存在しませんのでこれが回答となります。
ありがとうございます。
よくわかりました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1330882...
同様の回答がありますのでとりあえずこちらをどうぞ
以下私の回答もとい追って行き方を補足です
1を生成するにはBをみます
<A> ::= <R0>|<A><R0>|<B><R2>|<C><R1>
<B> ::= <R1>|<R1>|<B><R0>|<C><R2>
<C> ::= <R2>|<A><R2>|<B><R1>|<C><R0>
次に、<B>次の文字2を生成する<R2>がくる物を探します
※文字列は連結しなければならないので、<B>が必要なのです
<A> ::= <R0>|<A><R0>|<B><R2>|<C><R1>
<B> ::= <R1>|<A><R1>|<B><R0>|<C><R2>
<C> ::= <R2>|<A><R2>|<B><R1>|<C><R0>
最後に<A>次の文字3を生成するには<A>の次に3を生成する<R0>がくる物を探します
※前回の文字の生成の後に次の文字を連結なので<B>ではなく<A>が先に来るものを探します
<A> ::= <R0>|<A><R0>|<B><R2>|<C><R1>
<B> ::= <R1>|<A><R1>|<B><R0>|<C><R2>
<C> ::= <R2>|<A><R2>|<B><R1>|<C><R0>
ものすごい大雑把ですがこういうことです
不明な点があればコメントをどうぞ
ご丁寧な説明ありがとうございます。
よくわかりました。
お早い回答ありがとうございます。
よくわかりました!