次の CFG を作成しようとしています。
L = {az n |a ∈ {x, y}* および n = a の x の数または a の y の数}
どのように、またはどこから始めればよいかわかりません。
言語の説明は、x と y の文字列の後に z の文字列が続くことを理解しています。z の数は、x または y のいずれかと同じでなければなりません。
例:{xxyxyyxxyzzzzz, yxyxyxyyyzzzzzz, etc...}
これが私の「最善の」解決策です:
S => xSz | ySz | ϵ
z は、x または y を個別に生成するのではなく、x と y を組み合わせて同じ数を生成するため、これが間違っていることはわかっています。
編集:
これが答えだと思いますが、よくわかりません。うまくいくようです。
S => xSz | ySz | xS | yS | ϵ
編集:
無効な文字列も受け入れるため、うまくいきません...