37
2/4, Folie 1 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik Kapitel 2: Formale Sprachen Beschreibung für Bezeichner in Programmiersprachen Beschreibung für „wild cards“ in Skriptsprachen (/* reguläre Ausdrücke */) ?; [a-z]; * Beschreibung der Syntax von Programmiersprachen Backus-Naur-Form erweiterte Backus-Naur-Form Kontextfreie Sprachen reguläre Grammatiken/Sprachen kontextfreie Grammatiken/Sprachen

theorie teil02 4 - fbi = { S } S S 0 | 1 | 00 | 11 S 0S0 | 1S1 ein „längeres“ Beispiel: ein Neger mit Gazelle zagt im Regen nie ... C 01 | 0C1 w = 001100 S A B 0 A 1 B 0 0 1 0

  • Upload
    ledang

  • View
    218

  • Download
    3

Embed Size (px)

Citation preview

2/4, Folie 1 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

• Beschreibung für Bezeichner in Programmiersprachen• Beschreibung für „wild cards“ in Skriptsprachen (/* reguläre Ausdrücke */)

• ?; [a-z]; *

• Beschreibung der Syntax von Programmiersprachen• Backus-Naur-Form• erweiterte Backus-Naur-Form

Kontextfreie Sprachen

reguläre Grammatiken/Sprachen

kontextfreie Grammatiken/Sprachen

2/4, Folie 2 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

<Bezeichner> ::= _<Name> | <Name><Name> ::= <Buchstabe> | <Buchstabe><Name'><Name'> ::= <Buchstabe> | <Buchstabe><Name'> | <Ziffer><Name'><Buchstabe>::= a | ... | z | A | ... | Z<Ziffer> ::= 0 | ... | 9

Kontextfreie Sprachen

Backus-Naur-Form / erweiterte Backus-Naur-Form (/* Beispiel */)

2/4, Folie 3 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Backus-Naur-Form / erweiterte Backus-Naur-Form (/* Beispiel */)

<Block> ::= <Anweisung> | begin <Anweisung> {<Anweisung>} end<Anweisung> ::= <Zuweisung> | <Verzweigung> | <Schleife><Zuweisung> :: = <Bezeichner> = <Ausdruck><Verzweigung> ::= if <Bedingung> <Block> [else <Block>]<Schleife> := while <Ausdruck> <Block>...

zugehörige kontextfreie Grammatik (/* Beispiel */)

Σ = { begin,end,if,else,while,=,0,...,9 }V = { <Block>,<Anweisung>,<Zuweisung>,...,H1 }S = <Block>

2/4, Folie 4 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Backus-Naur-Form / erweiterte Backus-Naur-Form (/* Beispiel */)

<Block> ::= <Anweisung> | begin <Anweisung> {<Anweisung>} end<Anweisung> ::= <Zuweisung> | <Verzweigung> | <Schleife><Zuweisung> :: = <Bezeichner> = <Ausdruck><Verzweigung> ::= if <Bedingung> <Block> [else <Block>]<Schleife> := while <Ausdruck> <Block>...

zugehörige kontextfreie Grammatik (/* Beispiel */)

<Block> <Anweisung> | begin H1 endH1 <Anweisung> | <Anweisung> H1...<Verzweigung> if <Bedingung> < Block><Verzweigung> if <Bedingung> < Block> else <Block>

2/4, Folie 5 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

konzeptioneller Aspekt

Menge der zulässigen Ausdrücke charakterisieren

• einer Programmiersprache (/* mit Hilfe einer BNF / EBNF */)• ... also auch mit kontextfreien Grammatiken

• einer Seitenbeschreibungssprache / eines Datenaustauschformats(/* mit Hilfe einer Document Type Definition */)• ... also auch mit kontextfreien Grammatiken

algorithmischer Aspekt

das Membership-Problem für eine mittels einer kontextfreien Grammatik Gbeschriebenen Sprache L = L(G) in den Griff bekommen

2/4, Folie 6 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

• ausreichend ausdrucksfähig

• erlauben eine effiziente Lösung des Membership-Problems

... beide Punkte sind im Zusammenhang zu sehen

sind kontextfreie Grammatiken als Beschreibungsmittel

Kontextfreie Sprachen

relevante Fragestellungen

2/4, Folie 7 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

...int ggt(int a, int b) {

int teiler = a%b;while (teiler != 0) {

a = b; b = teiler;teiler = a%b;

}return (b);

}

int main ( ) { .. int help = ggt(zaehler,nenner); ...}

Kontextfreie Sprachen

Beispiel (/* C++ Funktion */)

2/4, Folie 8 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

...int ggt(int a, int b) {

int teiler = a%b;while (teiler != 0) {

a = b; b = teiler;teiler = a%b;

}return (b);

}

int main ( ) { .. int help = ggt(zaehler,nenner); ...}

solcher Zusammenhänge lassensich mit kontextfreien Grammatikennicht beschreiben

... da hilft man sich auf andere Artund Weise

... für alles andere reichen kontextfreie Grammatiken

Kontextfreie Sprachen

Beispiel (/* C++ Funktion */)

2/4, Folie 9 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

kontexfreie Grammatiken/Sprachen

• es sei G = [Σ,V,S,R] eine Chomsky-Grammatik

G heißt kontextfreie Grammatik, falls für alle Regeln l r von G gilt:

• | l | ≤ | r | (/* die Regeln sind nicht verkürzend */)• l ∈ V

Eine Sprache L heißt kontextfreie Sprache, falls es eine kontextfreieGrammatik G mit L(G) = L gibt.

Kontextfreie Sprachen

2/4, Folie 10 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beispiel

• Sprache L, die alle Zeichenketten enthält, die nur aus 0‘en und 1‘enbestehen und Palindrome sind (/* ergeben von vorn und hinten gelesendieselbe Zeichenkette */)

Σ = { 0,1 }V = { S }S

S 0 | 1 | 00 | 11S 0S0 | 1S1

ein „längeres“ Beispiel: ein Neger mit Gazelle zagt im Regen nie(/* einnegermitgazellezagtimregennie */)

2/4, Folie 11 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beispiel

• L = { 0i°1j°0k | i, j, k ≥ 1 und ( i = j oder j = k ) }

Σ = { 0,1 }V = { S,A,B,C }S

S AB | CAA 0 | 0A B 10 | 1B0C 01 | 0C1

2/4, Folie 12 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

zentraler Begriff: Ableitungsbaum

Ein Ableitungsbaum für w ist ein Baum, für den gilt:• seine Wurzel ist mit S markiert• jeder innere Knoten ist mit einer Variablen A ∈ V markiert• die Söhne eines inneren Knotens mit der Variablen A ergeben von

links nach rechts gelesen die rechte Seite einer Regel zumErsetzen von A

• die Blätter sind mit Buchstaben x ∈ Σ markiert(/ *die Blätter – von links nach rechts gelesen – ergeben gerade dieZeichenkette w */)

• es sei G = [Σ,V,S,R] eine kontextfreie Grammatik• es sei w ∈ L(G)

2/4, Folie 13 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Ableitungsbäume (/* Beispiele */)

S AB | CAA 0 | 0A B 10 | 1B0C 01 | 0C1

w = 001100

S

A B

0 1 B 0A

0 1 0

S

AC

00 C 1 A

00 1

2/4, Folie 14 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beobachtung (/* Teil 1 */)

• es sei G = [Σ,V,S,R] eine kontextfreie Grammatik• es sei w ∈ L(G) und B ein Ableitungsbaum für w

.... in B „finden“ sich mehrere Ableitungen des Wortes w

S

AC

00 C 1 A

00 1

S G CA G 0C1A G 0011AG 00110A G 001100

S G CA G C0A G C00G 0C100 G 001100

S G CA G 0C1A G 0C10AG 0C100 G 001100

...

2/4, Folie 15 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beobachtung (/* Teil 2 */)

• es sei G = [Σ,V,S,R] eine kontextfreie Grammatik• es sei w ∈ L(G)

• es gibt mehrere Ableitungsbäume für w• in jedem Ableitungsbaum „finden“ sich mehrere Ableitungen von w• in jedem Ableitungsbaum „findet“ sich eine eindeutig festgelegte

Linksableitung von w (/* es wird jeweils die am weitesten linksstehende Variable ersetzt */)

• in jedem Ableitungsbaum „findet“ sich eine eindeutig festgelegteRechtsableitung von w (/* es wird jeweils die am weitesten rechtsstehende Variable ersetzt */)

2/4, Folie 16 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Membership-Problem für kontextfreie Sprachen

• es sei G = [Σ,V,S,R] eine kontextfreie Grammatik• es sei w ∈ Σ*

• um herauszukommen, ob w ∈ L(G) gilt, versucht maneine Links- bzw. Rechtsableitung für w zu konstruierenoder nachzuweisen, daß es keine Links- bzw.Rechtsableitung für w gibt

• Linksableitungen Top-Down-Parser• Rechtsableitungen Bottom-Up-Parser

2/4, Folie 17 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Chomsky-Normalform für kontextfreie Grammatik

• es sei G = [Σ,V,S,R] eine kontextfreie Grammatik

G ist in Chomsky-Normalform, falls für alle Regeln (l,r) ∈ R gilt:

• l ∈ V• r = x mit x ∈ Σ oder r = AB mit A,B ∈ V

Einordnung

Es sei L eine kontextfreie Sprache. Dann gibt es eine GrammatikG = [Σ,V,S,R] in Chomsky-Normalform, so daß L(G) = L gilt.

2/4, Folie 18 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Vorteile von Grammatiken in Chomsky-Normalform (/* Teil 1 */)

• es sei G = [Σ,V,S,R] eine Grammatik in Chomsky-Normalform• es sei w ∈ L(G) mit | w | = n

Jede Ableitung des Worts w benötigt genau 2n-1 viele Ableitungsschritte.

Hintergrund

... jeder Ableitungsbaum für w ist – mit Ausnahme der letzten Ebene –ein Binärbaum

2/4, Folie 19 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

S ACS ABC SBA 0B 1

Σ = { 0,1 }V = { S,A,B,C }S

Kontextfreie Sprachen

S

CA

0 B

1

Beispiel

w = 0011

S

A B

0 1

2/4, Folie 20 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Vorteile von Grammatiken in Chomsky-Normalform (/* Teil 2 */)

• es sei G = [Σ,V,S,R] eine Grammatik in Chomsky-Normalform• es sei w ∈ Σ* mit w = x1...xn• es sei A ∈ V

Das Wort w ist aus der Variablen ableitbar (/* d.h. A *G w */) gdw.einer der folgenden beiden Fälle eintritt:

Fall 1: n = 1 dann muß R die Regel A x1 enthaltenFall 2: n > 1 dann muß es ein z ∈ { 1,...,n-1 }, Variablen B,C ∈ V

und eine Regel A BC in R geben, so daß gilt:B *G a1...azC *G az+1...an

... kann man benutzen, um unter Verwendung des Paradigmas derdynamischen Programmierung einen effizienten Algorithmus zurLösung des Membership-Problems für L(G) zu konzipieren

2/4, Folie 21 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Cocke-Younger-Kasami Algorithmus

• es sei G = [Σ,V,S,R] eine Grammatik in Chomsky-Normalform• es sei w ∈ Σ* mit w = x1... xn

verwendete Datenstruktur:

• Tabelle der Größe n × n• Zelle t[i][k] enthält Informationen, die das Teilwort xixi+1... xi+k-1

betreffen (/* d.h. das Teilwort, welches in w an der Position i beginntund aus k Zeichen besteht */)• t[i][k] enthält die Variable A ∈ V, falls A *G xixi+1... xi+k-1 gilt

k = 1 A ∈ t[i][1], falls es eine Regel A xi gibt

k > 1 A ∈ t[i][k], falls die Regel A BC zu R gehört und es einz ∈ { 1,...,k-1 } mit B ∈ t[i][z] und C ∈ t[i+z][k-z] gibt

Berechnungsvorschrift:

2/4, Folie 22 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

3

4

2

1

4321ki

Kontextfreie Sprachen

Beispiel

S ACS ABC SBA 0B 1

Σ = { 0,1 }V = { S,A,B,C }S

w = 0011

2/4, Folie 23 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

B3

B4

A2

A1

4321ki

Kontextfreie Sprachen

Beispiel (cont.)

S ACS ABC SBA 0B 1

w = 0011

0

0

1

1

Σ = { 0,1 }V = { S,A,B,C }S

2/4, Folie 24 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

--B3

B4

SA2

--A1

4321ki

Kontextfreie Sprachen

Beispiel (cont.)

S ACS ABC SBA 0B 1

w = 0011

00

01

11

Σ = { 0,1 }V = { S,A,B,C }S

2/4, Folie 25 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

--B3

B4

CSA2

----A1

4321ki

Kontextfreie Sprachen

Beispiel (cont.)

S ACS ABC SBA 0B 1

w = 0011

001

011

Σ = { 0,1 }V = { S,A,B,C }S

2/4, Folie 26 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

--B3

B4

CSA2

S----A1

4321ki

Kontextfreie Sprachen

Beispiel (cont.)

S ACS ABC SBA 0B 1

w = 0011

0011

S G AC G 0C G 0SB G 0ABB G 00BB G 001B G 0011

Σ = { 0,1 }V = { S,A,B,C }S

2/4, Folie 27 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

• für i = 1,...,n: bestimme T[i][1]

• für k = 2,...,n:für i = 1,...,n - k + 1:

setze T[i][k] = ∅für z = 1,...,k - 1:

füge ein A ∈ V zu T[i][z] hinzu, falls es B,C ∈ Vmit folgenden Eigenschaften gibt:

- B ∈ T[i][z]- C ∈ T[i+ z][k-z]- die Regel A BC gehört zu R

• falls S ∈ T[1][n], gib „ja“ aus; sonst gib „nein“ aus

Kontextfreie Sprachen

Cocke-Younger-Kasami Algorithmus

• es sei G = [Σ,V,S,R] eine Grammatik in Chomsky-Normalform• es sei w ∈ Σ* mit w = x1... xn

2/4, Folie 28 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

• löst das Membership-Problem für eine kontextfreie Sprache L = L(G),falls die Grammatik G in Chomsky-Normalform ist

• der CYK-Algorithmus benötigt O(n3) viele Schritte, um für ein Wort wder Länge n zu entscheiden, ob w ∈ L(G) oder w ∉ L(G) gilt (/* dieGröße von G ist in der O-Notation „versteckt“ */)

• der CYK- Algorithmus basiert auf dem Paradigma der dynamischenProgrammierung

Kontextfreie Sprachen

Cocke-Younger-Kasami Algorithmus

2/4, Folie 29 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

... der CYK-Algorithmus löst das Membership-Problem für allekontextfreien Sprachen

... bevor man den CYK-Algorithmus anwenden kann, ist einArt „pre-processing“ erforderlich

Kontextfreie Sprachen

zurück zu Chomsky-Normalformen

• es sei G = [Σ,V,S,R] eine kontextfreie Grammatik• dann kann man aus G eine Grammatik G°= [Σ°,V°,S°,R°] in Chomsky-

Normalform konstruieren, so daß L(G°) = L(G) gilt

Es sei L eine kontextfreie Sprache. Dann gibt es eine GrammatikG = [Σ,V,S,R] in Chomsky-Normalform, so daß L(G) = L gilt.

2/4, Folie 30 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beispiel für die Konstruktion von G° (/* einfacher Fall */)

S 0S 0S1

S 0S H0SH1H0 0H1 1

Σ‘ = { 0,1 }V‘ = { S,H0,H1 }S

S° 0S° H0HH S°H1H0 0H1 1

Σ° = { 0,1 }V° = { S°,H0,H1,H }S°

Σ = { 0,1 }V = { S }S

... falls G nur Regeln hat, deren rechte Seite nicht nur aus einer Variablen bestehen

2/4, Folie 31 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beispiel für die Konstruktion von G° (/* komplizierterer Fall */)

S 01S 1AS AA 0S1

S 01S 1AS 0S1A 0S1

Σ = { 0,1 }V = { S,A }S

Σ = { 0,1 }V = { S,A }S

... weiter wie zuvor !!!

... falls G Regeln hat, deren rechte Seite aus einer Variablen bestehen

2/4, Folie 32 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beispiel für die Konstruktion von G° (/* komplizierterer Fall */)

S AA BA 0 | 00B 1 | 11

S 0 | 00A BA 0 | 00B 1 | 11

Σ = { 0,1 }V = { S,A,B }S

Σ = { 0,1 }V = { S,A,B }S

... so nicht !!!

... man sollte systematisch vorgehen

S 0 | 00A 1 | 11A 0 | 00B 1 | 11

Σ = { 0,1 }V = { S,A,B }S

2/4, Folie 33 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beispiel für die Konstruktion von G° (/* komplizierterer Fall */)

S AA BA 0 | 00B 1 | 11

H1 H2H2 H3H2 0 | 00H3 1 | 11

Σ‘ = { 0,1 }V‘ = { H1,H2,H3 }H1

Σ = { 0,1 }V = { S,A,B }S

... Variablen durchnumerieren, so daß in Regelnder Form Hi Hj immer i < j gilt... ersetze sukzessive, wobei mit dem größtenIndex i begonnen wird

H1 H2H2 1 | 11H2 0 | 00H3 1 | 11

H1 0 | 00 | 1 | 11H2 1 | 11H2 0 | 00H3 1 | 11

2/4, Folie 34 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beispiel für die Konstruktion von G° (/* komplizierterer Fall */)

S 01S 0AS AA BB SA CA 0B1C 01A

S AA BB SA C

Σ = { 0,1 }V = { S,A,B,C }S

... Variablen so durchnumerieren, daß in Regelnder Form Hi Hj immer i < j gilt, funktioniertnicht immer (/* Zyklen !!! */)

2/4, Folie 35 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beispiel für das „pre-processing“ (/* komplizierterer Fall */)

Zyklen eliminieren !!! (/* d.h. Variablen zusammenfassen */)

Σ = { 0,1 }V = { S,C }S

S 01S 0SS CS 0S1C 01S

Σ = { 0,1 }V = { S,A,B,C }S

S 01S 0AS AA BB SA CA 0B1C 01A

S AA BB SA C

2/4, Folie 36 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale SprachenKontextfreie Sprachen

Beispiel für das „pre-processing“ (/* komplizierterer Fall */)

Σ = { 0,1 }V = { S,C }S

Σ‘ = { 0,1 }V‘ = { H1,H2 }H1

H1 01H1 0H1H1 H2H1 0H11H2 01H1

H1 01H1 0H1H1 01H1H1 0H11H2 01H1

... weiter wie zuvor !!!

Σ = { 0,1 }V = { S,A,B,C }S

S 01S 0SS CS 0S1C 01S

S 01S 0AS AA BB SA CA 0B1C 01A

2/4, Folie 37 © 2008 Prof. Steffen Lange - HDa/FbI - Grundlagen der Theoretischen Informatik

Kapitel 2: Formale Sprachen

• falls G Regeln enthält, deren rechten Seite nur aus einer Variablenbestehen, so nimm alle Regeln diesen Typs her und gehe wie folgt vor

Schritt 1 (/* Zyklen finden + eliminieren */):suche Zyklen; falls Zyklus x1 x2; ... ; xn x1gefunden, so ersetze x2,...,xn durch x1

Schritt 2 (/* Regeln umformen */):numeriere die Variablen so durch, daß in allen Regelnvom Typ Hi HK stets i < k gilt; ersetze in allen Regelnvom Typ Hi Hk die Variable Hk durch alle rechten Seitender Regeln vom Typ xk r mit |r| > 1 (/* beginne dabei mitdem größten i */)

Kontexfreie Sprachen

Beispiel für die Konstruktion von G° (/* allgemein */)

• anschließend gibt es nur noch Regelen, deren rechte Seiten aus einem Buch-staben oder aus mehr als einem Zeichen bestehen (/* der einfache Fall */)