• 締切済み

拡張BNFの解釈を教えて

<P>::=<P><P>|'('<P>')'|'['<P>'}'|'<'<P>'>'|'a'|'b'|'c' に関して、<P>の表す記号列集合を{<P>}とし、記号列Wが{<P>}に属する事をw∈{<P>}と表す。次の内の何れが誤りですか。 1.'a'∈{<P>} 2.'(a)'∈{<P>} 3.'<a><b>'∈{<P>} 4.{<P>}に属する記号列の長さは奇数長のものもある。 5.{<P>}に属する記号列は左から読んでも右から読んでも同じである。

みんなの回答

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.5

No.1、No.3のymmasayanです。 ><P>::=<P><P> >で右辺の<P>が同じものでないといけないとすると、 >expression::=term+term >という表現ができなくなりませんか? 左辺のの<P>を右辺に代入して、新しい左辺の<P>が出来上がるわけです。 これを何度繰り返してもいいのです。 したがってBNFを厳密に読めば、 expression::=expression+expressionということに成るような気がします。 <P>::=<P1><P2>が許されるかどうかですね。これが許されればabもでてくるのですがね。 これをやろうとすればBNFの文法をもう一行追加すればいいだけだと思います。

回答No.4

<P>::=<P><P> で右辺の<P>が同じものでないといけないとすると、 expression::=term+term という表現ができなくなりませんか?

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.3

No.1のymmasayanです。 結論が割れましたね。そこで若干補足です。 ポイントは<P>::=<P><P>の部分です。 記号列が増殖する(長くなる)のはここしかありません。ここは再帰構造をとっています。 増殖する場合は同じ記号列(記号)を接続することしか出来ません。 他の記号列部分はすべて左右対称ですから、増殖時も左右対称になります。 したがってabという非対称の記号列ができることはありません。 いずれにしても他の方の回答を待ちたいですね。

回答No.2

結論が違いますが、5が誤りですね。 '<a>'∈{<P>} '<b>'∈{<P>} より、 '<a><b>'∈{<P>} です。

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

3が誤りです。 1,2,4はいいとして3と5は完全に矛盾しています。 5の左右対称が正しくて、3の'<a><b>'は作り様がありません。

関連するQ&A