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}