Gramatyki bezkontekstowe

Transkrypt

Gramatyki bezkontekstowe
Gramatyki
Gramatyki bezkontekstowe
Adam Kobus
Updated: 17 maja 2016
gram1
Gramatyki bezkontekstowe
Gramatyka bezkontekstowa
Jest to czwórka G = (V , T , P, S), gdzie:
V to zbiór zmiennych (symboli nieterminalnych) - zmienna jest
tożsama z językiem,
T to zbiór symboli końcowych (terminalnych), zawiera łańcuchy
T
definiowanego języka, warunek: T 6= ∅, T V = ∅, są to
symbole niepodzielne,
P to zbiór produkcji, reguł definiowania A → α, gdzie A to
S
zmienna określająca język, a α to łańcuch symboli (V T )∗ ,
S
warunek: P ⊂ V × (T V )∗ .
S to symbol początkowy, wyróżniona zmienna, warunek: S ∈ V
W P mamy zatem deklarację sposobu tworzenia łańcuchów w
danym języku.
Przykłady
Binarne liczby parzyste:
P={
S → 0,
S → 0S,
S → 1S,
}
Gramatyka: G = ({S}, {0, 1}, P, S)
Przykłady
L = {ω : ω ma równą liczbę każdego z symboli }, Σ = {a, b}
P={
A → a, (A będzie oznaczało wszystkie słowa, gdzie symboli a jest
o jeden więcej niż b)
B → b, (zmienna B oznacza słowa, gdzie symboli b jest o jeden
więcej)
S → aB, S → bA, (zmienna S oznacza słowa, gdzie symboli a i b
jest równa liczba)
A → aS, B → bS, A → bAA, B → aBB
}
Gramatyka: G = ({A, B, S}, {a, b}, P, S)
Przykład: arytmetyka
V = {zmienna, operator , S}, T = {x, y , z, +, −, ∗, /, (, )}, P:
S → zmienna, S → SoperatorS, S → (S)
zmienna → x, zmienna → y , zmienna → z
operator → +, operator → −, operator → ∗, operator → /
Przykład: arytmetyka
Czy x + (y /x) jest poprawnym wyrażeniem? Wyprowadzenie
lewostronne:
S ⇒S
S ⇒ S + S ⇒ zmienna + S ⇒ x + S ⇒
operator
G ,l
G ,l
x + (S) ⇒ x + (S
G ,l
operator
G ,l
G ,l
G ,l
S) ⇒ x + (S/S) ⇒
G ,l
G ,l
x + (zmienna/S) ⇒ x + (y /S) ⇒ x + (y /zmienna) ⇒ x + (y /x)
G ,l
G ,l
∗
czyli S ⇒ x + (y /S)
G ,l
Można również zastosować drzewo wyprowadzeń.
G ,l
Zadania
Zadanie 1
Jakie wyrazy są generowane przez poniższą gramatykę
bezkontekstową:
G = ({S}, {a, b}, {S → aSb, S → ab}, S)
Zadanie 2
Podaj przykłady słów należących do języków generowanych przez
poniższe gramatyki (G = ({A, B, S}, {a, b}, P, S)), P:
# S → aS|bS|aA, A → aA|bA|aB, B → aB|bB|ε
# S → aS|bS|aA, A → aB, B → aB|bB|ε
# S → aS|bS|aA, A → aB|bB, B → ε
Zadanie 3
Podaj gramatyki bezkontekstowe generujące następujące zbiory:
# zbiór palindromów nad alfabetem Σ = {a, b},
# zbiór wszystkich łańcuchów zrównoważonych nawiasów,
# zbiór wszystkich łańcuchów nad alfabetem Σ = {a, b},
zawierających dokładnie dwa razy więcej symboli a niż
symboli b.
Zadanie 4
Podaj w sposób formalny opis słów należących do języków
generowanych przez poniższe gramatyki
(G = ({A, B, C , S}, {a, b}, P, S)), P:
# S → SAB|AB, A → Aa|a, B → Bb|b
# S → ABC , A → aAb|ab, B → bBa|ba, C → aCb|ab
# S → AC , A → aAb|aBb, B → bBa|ba, C → aCb|ab
Zadanie 5
Podaj gramatyki bezkontekstowe generujące następujące zbiory:
# {ab, bbc, ccca, aaaab, bbbbbc, cccccca, aaaaaaab, . . .}
# {a, b, ab, ba, aba, bab, abab, baba, ababa, babab, . . .}
# {ai b j : i ­ 0, j ­ 0, i ­ j}