• Keine Ergebnisse gefunden

• Regul¨ are Ausdr¨ ucke

N/A
N/A
Protected

Academic year: 2021

Aktie "• Regul¨ are Ausdr¨ ucke"

Copied!
16
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Theoretische Informatik I

Einheit 2.4 Grammatiken

1. Arbeitsweise 2. Klassifizierung

3. Beziehung zu Automaten

(2)

Beschreibungsformen f¨ ur Sprachen

• Mathematische Mengennotation

– Pr¨adikate beschreiben Eigenschaften der W¨orter – Extrem flexibel, nicht notwendig “berechenbar”

• Endliche Automaten

– Beschreibung der Verarbeitung von Sprachen – Schwerpunkt ist Erkennen korrekter W¨orter

• Regul¨ are Ausdr¨ ucke

– Beschreibung der Struktur der Sprache

• Grammatiken

–Produktionsregeln beschreiben Aufbau der W¨orter

– Auch f¨ur komplexere Strukturen als regul¨are Sprachen – G¨angig f¨ur die Beschreibung von Programmiersprachen

(3)

Beispiel: Auszug der Grammatik von JAVA

(4)

Komponenten von Gramatiken

• Terminalsymbole: Alphabet der Sprache

– Symbole, aus denen die erzeugten W¨orter bestehen sollen

– Bei Programmiersprachen meist ASCII-Symbole ohne Kontrollzeichen

• Variablen: Hilfsalphabet f¨ ur Verarbeitung

– Beschreiben die syntaktischen Kategorien der Sprache

– Bei JAVA z.B. Applikation, Name, Variablenname, Anweisung, . . . – Andere Bezeichnung: Nichtterminale Symbole

• Produktionen: Regeln zur Erzeugung von W¨ ortern

– Erkl¨aren wie syntaktischen Kategorien aufgebaut sind

– Erkl¨aren Erzeugung von W¨ortern der Sprache in den einzelnen Kategorien – z.B. “Eine Applikation beginnt mit class gefolgt von einem Namen, ...”

• Startsymbol

– Erkl¨art welche syntaktische Kategorie beschrieben werden soll

(5)

Grammatiken – mathematisch pr¨ azisiert

Eine Grammatik ist ein 4-Tupel G = ( V , T , P , S ) mit

• T endliches Terminalalphabet

• V endliches Hilfsalphabet mit V ∩T = ∅

• PΓ+×Γ endliche Menge der Produktionen (wobei Γ = V ∪T) Schreibweise f¨ur Produktionen: l→r P statt (l, r)P

• S V Startsymbol

(6)

Arbeitsweise: Produktion von W¨ortern der Zielsprache

• G1 = ({S}, {0, 1}, P, S) mit P = {S→S1, S→S0, S→ǫ} Erzeugung von W¨ortern:

S→ ǫ

S→ S0→ 0

S→ S0→ S10→ S010→ S0010→ 0010

– Nur W¨orter ¨uber dem Terminalalphabet sind von Interesse – ǫ, 0, 0010 geh¨oren zur erzeugten Sprache

– S, S0, S10, S010, S0010 sind nur “Zwischenschritte”

• G2 = ({S, A, B, C}, {0, 1}, P, S) mit

P = {S→B, S→CA0, A→BBB, B→C1, B→0, CC1→ǫ} Ableitungen:

S −→B −→0 √

S −→B −→C1 Erfolglos, kein Wort der Zielsprache erreichbar S −→CA0 −→CBBB0−→CC1BB0−→BB0 −→0B0−→000 √

(7)

Arbeitsweise von Grammatiken – pr¨ azisiert

• Ableitungsrelation −→

Γ

+

×Γ

– w −→ z ≡ ∃x, y Γ. ∃l→r P. w=xl y z=x ry Anwendung von Produktionen auf W¨orter

• Erweiterte Ableitungsrelation −→

Γ

+

×Γ

– w −→0 z ≡ w=z

– w −→n+1 z ≡ ∃uΓ. w−→u u −→n z – w −→ z ≡ ∃nN. w −→n z

– Grammatik durch optionalen Index G (−→ G) spezifizierbar

• Von G erzeugte Sprache

– Menge der Terminalw¨orter, die aus S abgeleitet werden k¨onnen

L ( G ) ≡ { w

T

| S −→

w }

(8)

Grammatik f¨ ur L = {0

k

1

l

| k≤l}

• G3 = ({S}, {0, 1}, P, S) mit P = {S→S1, S→0S1, S→ǫ}

• Zeige L(G3) = L per Induktion ¨uber L¨ange der Ableitung – Ableitungen der L¨ange 0 liefern keine Terminalw¨orter

– Zeige: ∀l N. ∀w {0, 1}. S −→l+1 w ⇔ (∃k≤l. w = 0k1l)

• Basisfall

– S −→1 w ⇔ (S→w)P ⇔ w = ǫ ⇔ ∃k≤0. w = 0k10

• Induktionsschritt

– Es gelte ∀w{0, 1}. S −→l+1 w⇔ (∃k≤l. w = 0k1l) – S −→l+2 v

⇔ S→S1 −→l+1 v S→0S1−→l+1 v

⇔ ∃w {0,1}. S −→l+1 w (v = w1v = 0w1)

⇔ ∃w {0,1}.∃k≤l. w = 0k1l (v = w1v = 0w1) (Annahme)

⇔ ∃k≤l. v = 0k1l+1 v = 0k+11l+1

⇔ ∃k≤(l + 1). v = 0k1l+1

(9)

Klassifizierung von Grammatiken

• allgemein (Typ 0):

keine Einschr¨ankung an die Produktionen

• kontextsensitiv (Typ 1)

– nur Regeln der Form x A y→x z y oder S→ǫ (x, y, z Γ, AV, z6=ǫ) (S→ǫ nur erlaubt, wenn S nicht rechts in einer anderen Regel auftaucht)

• expansiv

– nur Regeln der Form x→z mit |x|≤|z|, oder S→ǫ (xΓ+, z (Γ−{S})+)

• kontextfrei (Typ 2)

– nur Regeln der Form A→z (zΓ, AV )

• linear

– nur Regeln der Form A→ǫ oder A→u B v (A, B V, u, v T)

• rechtslinear (Typ 3)

– nur Regeln der Form A→ǫ oder A→a B (A, B V, aT) Manche B¨ucher: nur Regeln der Form A→ǫ oder A→v B (A, BV, vT)

• linkslinear

– nur Regeln der Form A→ǫ oder A→B a (A, B V, aT)

(10)

Beispiele f¨ ur Grammatikklassen

kontextsensitiv: Regeln x A y→x z y oder S→ǫ

expansiv: Regeln x→z mit |x|≤|z|, oder S→ǫ

kontextfrei: Regeln A→z

linear: Regeln A→ǫ oder A→u B v

rechtslinear: Regeln A→ǫ oder A→a B

linkslinear: Regeln A→ǫ oder A→B a

• G1 = ({S}, {0, 1}, P, S) mit P = {S→S1, S→S0, S→ǫ}

– linkslinear, kontextfrei, nicht expansiv, nicht kontextsensitiv (S rechts, S→ǫ)

• G2 = ({S, A, B, C}, {0, 1}, P, S) mit

P = {S→B, S→CA0, A→BBB, B→C1, B→0, CC1→ǫ} – allgemein (keine anderen Bedingungen erf¨ullt)

• G3 = ({S}, {0, 1}, P, S) mit P = {S→S1, S→0S1, S→ǫ} – kontextfrei, nicht expansiv, nicht kontextsensitiv

• G4 = ({S, A, B, C}, {a, b, c}, P, S) mit P = {S→aSBC, S→aBC, CB→BC, aB→ab, bB→bb, bC→bc, cC→cc} – expansiv, nicht kontextfrei

(11)

Sprachklassen

• Typ-0 Sprachen

– Sprachen der Form L = L(G) f¨ur eine beliebige Grammatik G

• Typ-1 Sprachen (kontextsensitive Sprachen)

– Sprachen der Form L = L(G) f¨ur eine kontextsensitive Grammatik G – L ist kontextsensitiv g.d.w. L = L(G) f¨ur eine expansive Grammatik G

• Typ-2 Sprachen (kontextfreie Sprachen)

– Sprachen der Form L = L(G) f¨ur eine kontextfreie Grammatik G

• Lineare Sprachen

– Sprachen der Form L = L(G) f¨ur eine lineare Grammatik G

• Typ-3 Sprachen (regul¨ are Sprachen)

– Sprachen der Form L = L(G) f¨ur eine rechtslineare Grammatik G – L ist regul¨ar g.d.w. L = L(G) f¨ur eine linkslineare Grammatik G

L

i

≡ { L | L ist Sprache vom Typ i }

(12)

Typ-3 Sprachen vs. regul¨ are Sprachen

Wie h¨angen Grammatiken und Automaten zusammen?

• Automaten verarbeiten Eingabew¨ orter

– Jedes Symbol wird in einem Schritt abgearbeitet

– Symbol bestimmt, ob Automat im Zustand bleibt oder wechselt

• Grammatiken erzeugen W¨ orter

– Hilfssymbole werden im Endeffekt in Terminalw¨orter umgewandelt – Nichtlineare Grammatiken erzeugen mehrere Symbole gleichzeitig

– Ableitungen in rechts-/linkslinearen Grammatiken erzeugen pro Schritt ein Terminalsymbol und verwenden jeweils nur ein Hilfssymbol

• Wie kann man umwandeln?

– Konstruiere zu jedem DEA eine ¨aquivalente rechtslineare Grammatik – Konstruiere zu jeder rechtslinearen Grammatik einen ¨aquivalenten DEA 7→

L

3

= { L | L ist regul¨ ar }

(13)

Umwandlung von DEAs in Typ-3 Grammatiken

F¨ ur jeden DEA A gibt es eine

Typ-3 Grammatik G mit L ( G ) = L ( A )

• Gegeben DEA A = ( Q , Σ, δ , q

0

, F )

– Wandle Abarbeitung von Symbolen in Erzeugung durch Grammatik um – Setze G := (Q, Σ, P, q0) mit P = {q→aq |δ(q, a) = q} ∪ {q→ǫ |q F} – G ist per Konstruktion rechtslinear, also vom Typ 3

• Zeige L ( G ) = L ( A )

w = w1..wn L(G)

⇔ q0−→ w1..wn

⇔ ∃q1, .., qnQ. q0 −→w1q1 −→w1w2q2 −→...−→w1..wnqn−→w1..wn

⇔ ∃q1, .., qnQ. q0,w1..wn ⊢ q1, w2..wn ⊢. . .⊢ qn−1,wn ⊢ qn, ǫ qnF

⇔ ∃qn F. q0,w1..wn qn, ǫ

⇔ wL(A) √

(14)

Umwandlung von Typ-3 Grammatiken in NEAs

F¨ ur jede Typ-3 Grammatik G gibt es einen NEA A mit L ( A ) = L ( G )

• Gegeben Grammatik G = ( V , T , P , S )

– Wandle Erzeugung von Symbolen in Abarbeitung durch DEA um – Setze A := (V , T, δ, S, F) mit δ(X, a) = {X |X→aX′ ∈P}

und F = {X V |X→ǫ P}

• Zeige L ( A ) = L ( G )

w = w1..wnL(A)

⇔ ∃XnF. S,w1..wn Xn, ǫ

⇔ ∃X1, .., XnV . S,w1..wn ⊢ X1, w2..wn ⊢. . .⊢ Xn, ǫ XnF

⇔ ∃X1, .., XnV . S −→w1X1 −→...−→ w1..wnXn−→w1..wn

⇔ S −→ w

⇔ wL(G) √

(15)

Umwandlungen am Beispiel

• Konvertiere DEA f¨ ur (0+1)

01

– A = ({ q0,q1,q2}, {0,1}, δ, q0, {q2}) mit

-

Start q0

R

1

0 - q1

R

0

1 - q2

0

Y 1

• Erzeugte Grammatik

– G = ({ q0,q1,q2}, {0,1}, P, q0) mit

P = { q0→1q0, q0→0q1, q1→1q2, q1→0q1, q2→1q0, q2→0q1, q2→ǫ }

• Umwandlung von G in einen NEA

– Transformation erzeugt urspr¨unglichen Automaten

(16)

Die Chomsky Hierarchie

L

3 ⊂

L

2 ⊂

L

1 ⊂

L

0

• Wichtige Vertreter

– L2−L3: {0n1n | nN} – L1−L2: {0n1n2n | n N}

– L0−L1: {wi {0, 1} | Das Programm mit Codierung wi h¨alt bei Eingabe wi }

• Zugeh¨ orige Automatenmodelle

– L0: Turingmaschine

– L1: linear platzbeschr¨ankte nichtdeterministische Turingmaschine – L2: nichtdeterministischer endlicher Automat mit Kellerspeicher – L3: endlicher Automat

Mehr in zuk¨ unftigen Vorlesungen

Referenzen

ÄHNLICHE DOKUMENTE

Sprache regul¨ ar = ⇒ Sprache erf¨ ullt die Pumping-Eigenschaft Zeige, dass eine Sprache nicht regul¨ ar ist, durch Kontraposition:. Sprache erf¨ ullt nicht

das Pumping-Lemma zeigt, dass L nicht regul¨ ar ist. Beachte: L ist regul¨

regul¨ are Grammatiken – endliche Automaten Satz 3.2.7 regul¨ are Grammatiken charakterisieren regul¨ are Sprachen L ⊆ Σ ∗

Folgerungen aus dem Satz von Kleene Korollar 2.3.2 die Klasse der regul¨ aren Sprachen ist abgeschlossen unter allen Booleschen Operationen sowie Konkatenation und Stern

Das Pumping-Lemma f¨ ur regul¨ are Sprachen besagt, dass es f¨ ur jede unendliche regul¨ are Sprache eine Grenze n gibt, so daß es zu jedem Wort w der Sprache, das mindestens die

– Two regular expressions may be concatenated; the resulting regular expression matches any string concatenating two substrings that match the subexpressions. – Two regular

In vielen F¨ allen m¨ ochte man, dass ein regul¨ arer Ausdruck an einer Stelle nicht auf ein besonderes Zeichen sondern auf eine ganze Menge von Zeichen passt.. Dies kann durch

Du kannst nach literalen Zeichenketten suchen und weisst, dass bei regul¨ aren Aus- dr¨ ucke standardm¨ assig Gross- und Kleinschreibung unterschieden werden.. Du kannst regul¨