Eine Grammatik G ist ein 4-Tupel G = (T, V, S, P) bestehend aus
Sei G = (T, V, S, P) eine Grammatik. G heißt regulär genau dann wenn für alle (\alpha, \beta) \in P gilt, dass
Reguläre Grammatiken heißen auch Chomsky Typ-3 Grammatiken.
Reguläre Grammatiken erzeugen genau die …
… Sprachen.
Sei G=(T, V, S, P) eine Grammatik. G heißt kontextfrei genau dann wenn für alle (\alpha, \beta) \in P gilt, dass
Kontextfreie Grammatiken heißen auch Chomsky Typ-2 Grammatiken.
Kontextfreie Grammatiken erzeugen genau die …
… Sprachen.
Sei G = (T, V, S, P) eine kontextfreie Grammatik. G ist in Chomsky-Normalform (CNF) genau dann wenn für alle (\alpha, \beta) \in P gilt, dass
Für jede kontextfreie Grammatik G_1 = (T, V_1, S_1, P_1) existiert eine kontextfreie Grammatik G_2 = (T, V_2, S_2, P_2) in Chomsky-Normalform, sodass L(G_1) = L(G_2).
Falls (S, \epsilon) \in P: Neues Startsymbol S' einführen und neue Produktion S' \to S | \epsilon hinzunehmen.
Terminale a in nicht-terminierenden rechten Seiten durch neue Nichtterminale X_a ersetzen und neue Produktionen X_a \to a hinzunehmen.
Wiederholen bis nicht mehr anwendbar: A \to BCD ersetzen durch A \to Y_{BC}D und neue Produktion Y_{BC} \to BC hinzunehmen.
\epsilon-Produktionen A \to \epsilon (für A \neq S) streichen und für L \to AR neue Produktion L\to{}R hinzunehmen.
Kettenregeln A \to B streichen und für B \to w neue Produktion A \to w hinzunehmen.
;; Eingabe: Grammatik G = (T, V, S, P) in CNF und Wort w \in T^* mit |w| = n ;; Ausgabe: Aussage ob w \in L(G) FOR i := 1, ..., n DO table[i][1] := \emptyset FOREACH (l, r) \in P DO ;; terminierende Produktion IF r = w[i] THEN table[i][1] := table[i][1] \cup { l } FI DONE DONE FOR j := 2, ..., n DO FOR i := 1, ..., n - j DO table[i][j] := \emptyset FOR k := 1, ..., j DO FOREACH (l, (r_1, r_2)) \in P DO ;; nicht-terminierende Produktionen IF r_1 \in table[i][k] \land r_2 \in table[i + k][j - k] THEN table[i][j] := table[i][j] \cup { l } FI DONE DONE DONE DONE RETURN S \in table[1][n]
Sei \Sigma ein Alphabet und L \subset \Sigma^* eine kontextfreie Sprache.
Dann existiert ein p \in \mathbb{N} sodass für alle w \in L mit |w| \geq p gilt: es existieren u, v, x, y, z \in \Sigma^*, sodass
Sei G=(T,V,S,P) eine Grammatik. G heißt kontextsensitiv genau dann wenn für alle (\alpha, \beta) \in P gilt, dass
Kontextsensitive Grammatiken heißen auch Chomsky Typ-1 Grammatiken.
Kontextsensitive Grammatiken erzeugen genau die …
… Sprachen.
Sei G = (T, V, S, P) eine kontextsensitive Grammatik. G ist in Normalform genau dann wenn für alle (\alpha, \beta) \in P gilt, dass
Für jede kontextsensitive Grammatik G_1 = (T, V_1, S_1, P_1) existiert eine kontextsensitive Grammatik G_2 = (T, V_2, S_2, P_2) in Normalform, sodass L(G_1) = L(G_2).
Sei G = (T, V, S, P) eine Grammatik. G heißt ohne weitere Einschränkungen allgemein.
Allgemeine Grammatiken heißen auch Chomsky Typ-0 Grammatiken.
Allgemeine Grammatiken erzeugen genau die …
… Sprachen.