Język L = {ai bj ck | i != j or j != k}
można napisać po prostu jako L = L1 U L2
w taki sposób, że L1 = {ai bj ck | i != j }
i L1 = {ai bj ck | j != k }
.
W L nie ma ograniczenia na symbol c
Jedynym warunkiem jest numberOf(a)
nie powinna być równa numberOf(b)
. Albo numberof(a)
>numberOf(b)
lubnumberof(a)
<. numberOf(b)
. Więc gramatyki tego języka powinno być:
L1 => EX // L1 is start variable
E => aEb | A | B
X => C |^
A => aA | a
B => bB | b
C => cC | c
W powyższej gramatyki używając E możemy wygenerować równą liczbę a
i b
w strukturze anEbn
, a następnie przekonwertować ten sentymentalny ze w formie zdanie albo E
musi zastąpiona B
lub A
powoduje, że generowany jest ciąg znaków w takiej postaci, że ai bj
z i != j
, przy użyciu zmiennej dowolną liczbę c
można dodać do wzorca ai bj
.
Aby zrozumieć tę gramatykę przeczytać: Tips for creating Context free grammar i Why the need for terminals? Is my solution sufficient enough?
Podobnie dla L nie ma ograniczenia na symbol a
Jedynym warunkiem jest numberOf(b)
nie powinna być równa numberOf(c)
. Albo numberof(b)
>numberOf(c)
lubnumberof(b)
<. numberOf(c)
. Więc gramatyki tego języka powinno być:
L2 => YF // L2 is start variable
F => bFc | B | C
Y => A |^
A => aA | a
B => bB | b
C => cC | c
Teraz używając zarówno tej gramatyki wprowadzenie nowego startu zmienną S
i dwa nowe zasady produkcji S => L1 | L2
my dostaje gramatyki dla języka L = {ai bj ck | i != j or j != k}
.
Dodawanie jeszcze jednego pokrewnego linku [Jak pisać gramatykę dla formalnego języka?] (Http://stackoverflow.com/questions/15559324/construct-grammar-given-the-following-language-an-bm-nm-0 -1-2-n-2/15578641? Noredirect = 1 # comment28898425_15578641) –