Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are...

29
Formale Sprachen, regul¨ are und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort ¨ uber A: endliche Folge von Zeichen aus A A * : volle Sprache ¨ uber A: Menge der A-Worte formale Sprache ¨ uber A: eine Teilmenge von A * leeres Wort ε Konkatenation s.t (Zusammenh¨ angen von s und t) teilweise als st geschrieben ange eines Wortes t: Anzahl der Zeichen in t. P raktische Informatik 1, WS 2004/05, F olien Grammatik, (5. Januar2005) Seite 1

Transcript of Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are...

Page 1: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Formale Sprachen, regulare und kontextfreie

Grammatiken

Alphabet A: endliche Menge von ZeichenWort uber A: endliche Folge von Zeichen aus AA∗: volle Sprache uber A: Menge der A-Worteformale Sprache uber A: eine Teilmenge von A∗

leeres Wort εKonkatenation s.t (Zusammenhangen von s und t)

teilweise als st geschriebenLange eines Wortes t: Anzahl der Zeichen in t.

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 1

Page 2: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Beispiele: formale Sprachen

1. Alphabet A = {0,1},A∗ = Menge aller Binarzahlen

{0,1} Menge der Binarziffern ( Bits )

{0,1}8 Menge der Binarfolgen der Lange 8.

= Menge der Worte der Lange 8 (Bytes)

2. Alphabet A = {a, b, c, . . . , z}A∗ = Menge aller Strings aus Kleinbuchstaben

Palindrome: {a1 . . . an ∈ A∗ | a1 . . . an = an . . . a1}

3. {ε} ist eine formale Sprache.

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 2

Page 3: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Regulare formale Sprachen

regulare Ausdrucke uber A.

Definition der Syntax der regularen Ausdrucke

ε (leeres Wort)a fur a ∈ A(r + s), (rs) und (r∗) Wenn r und s regulare Ausdrucke

Erweiterungen bzw. Abkurzungen:

rn mit rn = r . . . r︸ ︷︷ ︸n

[r] mit [r] := r + ε

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 3

Page 4: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Beispiele: regulare Ausdrucke

1. (0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9)∗

Alle endlichen Ziffernfolgen (naturliche Zahlen)

2. (0)∗ entspricht {ε,0,00,000,0000, . . .}.

3. 1((0 + 1)∗)Binardarstellungen aller positiven ganzen Zahlen ohne fuhrende

Nullen

4. (1+2+3+4+5+6+7+8+9)(0+1+2+3+4+5+6+7+

8 + 9)∗“,“(0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9)+

dezimale Gleitkommazahlen ohne Exponent uber dem Alphabet

{0,1,2,3,4,5,6,7,8,9,“,“}

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 4

Page 5: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Regulare Operatoren auf formalen Sprache

Seien R und S formale Sprachen uber dem Alphabet A.

RS := {uv | u ∈ R, v ∈ S}.

definiere Rn: R0 := {ε}R1 := R

Rn := RRn−1 wenn (n > 1)

R∗ :=⋃{Rn | n ≥ 0} (Kleene-)Abschluß

R+ :=⋃{Rn | n ≥ 1}. positiver Abschluß

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 5

Page 6: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Semantik von regularen Ausdrucken

Idee: Der regulare Ausdruck r beschreibt eine formale Sprache I(r)

I(ε) := {ε}I(a) := {a} fur a ∈ AI((r + s)) := I(r) ∪ I(s)I((rs)) := I(r)I(s)I(r∗) := (I(r))∗

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 6

Page 7: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Beispiele

Alphabet {a, b, c}

I(ab∗) = {a, ab, abb, abbb, . . .}

I(a+cb∗) =

{ ac, aac, aaac, . . . ,acb, aacb, aaacb, . . . ,acbb, aacbb, aacbbb, . . .. . . }

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 7

Page 8: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Regulare formale Sprache

Eine formale Sprache L nennt man regular,

wenn es einen regularen Ausdruck gibt,

der L erzeugt.

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 8

Page 9: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Kontextfreie Grammatiken und Sprachen

Verwendung: Syntax von Programmiersprachen,Zahldarstellungen,Syntax der Aussagen- und Pradikatenlogik

Definition kontextfreie Grammatik (context free grammar, CFG)

G = (N, T, P, σ) mit den Komponenten:

N Nichtterminale: Hilfszeichen , Nontermi-

nalsT Terminalzeichen (Terminals),

das eigentliche Alphabet, mit N ∩ T = ∅σ ∈ N StartzeichenP ⊆ N × (N ∪ T )∗ Produktionensystem, Regeln

(A, w) ∈ P heißt Produktion oder Regel von G.

statt (A, w) ∈ P schreibt man auch A → w.

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 9

Page 10: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Backus-Naur-Form (BNF)

kontextfreie Syntax hoherer Programmiersprachen

Metasymbole sind:

〈 〉 〈Zahl〉 ist Nichtterminalsymbol::=

”Definition“eines Nichtterminals

| Trennt Alternativen

Beispiel 〈Ziffer〉 ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

entspricht 10 Regeln einer CFG.

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 10

Page 11: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Erweiterungen der BNF

〈Zahl〉 ::= 〈Ziffer〉+

entspricht:

〈Zahl〉 ::= 〈Ziffer〉 | 〈Ziffer〉〈Zahl〉

〈Zahl mit Vorzeichen〉 ::= [+|−]〈Zahl〉entspricht:

〈Zahl mit Vorzeichen〉 ::= +〈Zahl〉 | 〈Zahl〉 | − 〈Zahl〉

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 11

Page 12: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Beispiel: Syntax von Programmiersprachen

Regeln:

〈Ausdruck〉 ::= 〈Bezeichner〉 | 〈Zahl〉 | (〈Ausdrucke〉)〈Ausdrucke〉 ::= 〈Ausdruck〉 | 〈Ausdruck〉〈Ausdrucke〉〈Zahl〉 ::= 〈Ziffer〉 | 〈Ziffer〉〈Zahl〉〈Ziffer〉 ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9〈Bezeichner〉 ::= 〈Buchstabe〉 | 〈Buchstabe〉〈Zeichenkette〉〈Zeichenkette〉 ::= 〈Zeichen〉 | 〈Zeichen〉〈Zeichenkette〉〈Buchstabe〉 ::= A | B | C | D | . . .〈Zeichen〉 ::= 〈Ziffer〉 | 〈Buchstabe〉

Nichtterminale: 〈Ausdruck〉, . . .Terminale: {0,1, . . . ,9, A, . . .}Startsymbol: Ein Nichtterminal (sinnvoll: 〈Ausdruck〉).

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 12

Page 13: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Beispiel: Syntax von Programmiersprachen

Regular beschreibbare Anteile

〈Zahl〉 (0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9)∗

〈Bezeichner〉 (A + . . . + Z)(A + . . . + Z + 0 + 1 + . . . + 9)∗

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 13

Page 14: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Erzeugte formale Sprache zur CFG G

Definition

Gegeben G = (N, T, P, σ).

Herleitung:

σ → w1 → . . . → wn

Jeder Ubergang: wi → wi+1 ist von der Form:sat → sbt und a → b ist eine Regel in G

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 14

Page 15: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Erzeugte formale Sprache zur CFG G

Definition: Die von G erzeugte formale Sprache L(G):

alle Worte aus T ∗, die aus σ durch endliche, mehrmalige Anwendung

der Produktionen hergeleitet werden konnen.

Die so erzeugbaren formalen Sprachen nennt man kontextfrei.

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 15

Page 16: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Beispiele zu L(G)

σ ::= 〈Zahl〉〈Zahl〉 ::= 〈Ziffer〉 | 〈Ziffer〉〈Zahl〉〈Ziffer〉 ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

σ

→ 〈Zahl〉 → 〈Ziffer〉〈Zahl〉→ 〈Ziffer〉〈Ziffer〉〈Zahl〉 → 〈Ziffer〉〈Ziffer〉〈Ziffer〉→ 1〈Ziffer〉〈Ziffer〉 → 12〈Ziffer〉 → 123

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 16

Page 17: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Ableitungsbaum (Herleitungsbaum)

Definition

Sei G = (N, T, P, σ) eine CFG.

Ein Ableitungsbaum B von w (derivation tree, parse tree)

ist ein markierter Baum, der die Herleitung von w reprasentiert

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 17

Page 18: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Ableitungsbaum (Herleitungsbaum): Beispiel

Grammatik zu arithmetischen Ausdrucken uber den Zahlen :

E → (E + E), E → (E ∗ E), E → Z, Z → {0,1, ...,9}∗

Ein Herleitungsbaum fur den Ausdruck ((1 + 2) ∗ 3) ist:

E

ttiiiiiiiiiiiiiiiiiiiiiiiiii

wwooooooooooooooooo

�� ��???

????

?

''NNNNNNNNNNNNNNNN

( E

xxppppppppppppppppp

������

����

�� ��>>>

>>>>

>>

''NNNNNNNNNNNNNNNNNN ∗ E

��

)

( E

��

+ E

��

) Z

��

Z

��

Z

��

3

1 2

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 18

Page 19: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Syntaxbaum

Syntaxbaum wird aus Herleitungsbaum bestimmt.

Oft Basis einer operationalen Semantik

Beispiel: Syntaxbaum fur den Ausdruck ((1 + 2) ∗ 3)

∗~~}}

}}}}

}}

��???

????

?

+

��~~~~

~~~

��@@@

@@@@

3

1 2

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 19

Page 20: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Zusammenhange

Es gilt:

Regulare Sprachen sind kontextfrei.

Es gibt kontextfreie Sprachen, die nicht regular sind.

Es gibt auch formale Sprachen, die nicht kontextfrei sind.

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 20

Page 21: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Programme einer Programmiersprache

Erzeugung der zulassigen Programme:

Stufe 1 CFG erzeugt syntaktisch zulassige Programme

Stufe 2 Kontextbedingungen, Typbedingungen schranken weiter ein.

Beispiele fur Stufe 2:

Deklarationen von Variablen vor ihrer Benutzung

Ausdrucke mussen getypt sein (in Haskell)

Variablen verschieden in Funktionsdefinition (Haskell, Python)

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 21

Page 22: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Syntaxdiagramme

sind eine graphische Form einer CFG

Pascal

repeat statement until expression

;

repeat im Oval: String als TerminalsymbolRechteck Nichtterminalsymbol

Die Pfeile bezeichnen erlaubte Durchlaufrichtungen.

Aquivalente BNF:

〈repeat-expr〉 ::= repeat 〈statements〉 until 〈expression〉〈statements〉 ::= 〈statement〉 | 〈statement〉;〈statements〉

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 22

Page 23: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Mehrdeutige Grammatiken und Sprachen

Mehrdeutigkeit einer Grammatik G:

Es gibt ein Wort w mit mehr als einem Ableitungsbaum

⇒ Semantik nicht eindeutig

Uberladen von Symbolen:

− als Subtraktion bzw. “Negativ-machen“

−1− 2

Es gibt sogar inharent mehrdeutige kontextfreie Sprachen, d.h. solche

fur die nur mehrdeutige kontextfreie Grammatiken existieren.

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 23

Page 24: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Beispiele zur Eindeutigkeit

Beispiel 1

Wenn if-then-else eine optionales else hat:

Zuordnung des else ist nicht immer eindeutig:

if b1 then if b2 then c1 else c2

kann auf zwei Arten interpretiert werden:

if b1 then {if b2 then c1 else c2}

if b1 then {if b2 then c1} else c2

Diese Interpretationen entsprechen gerade den zwei moglichen Syn-

taxbaumen zu diesem Ausdruck.

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 24

Page 25: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Beispiel 2

Arithmetische Ausdrucke; mit Grammatik:

A ::= Zahl | V ariable | A + A | A−A | . . .

Der Ausdruck 1− 2− 3 hat zwei mogliche Interpretationen:

(1− 2)− 3 oder 1− (2− 3)

Page 26: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Notationen von Ausdrucken, Terme

Varianten der Notation von geschachtelten Ausdrucken.

Stelligkeit von Operatoren :fest f(a,b,c)variabel (∗ 1 2 3 4), oder

Positionierung von Operatoren und Argumenten:prefix (+ 1 2)infix 1 + 2postfix 1 2 +mixfix (IF A THEN B ELSE C)

lineare Notation → Syntaxbaum → Term

Beispiel −1− 2 → SUBTRACT(NEGATE(1),2)

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 26

Page 27: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Notationen von Ausdrucken, Terme – 2

Klammerung von Operatoren und Argumenten:

Bei assoziativen Operatoren mit Infix Notation:Linksklammerung 1 + 2 + 3 + 4 (((1+2)+3)+4)

1− 2− 3− 4 (((1-2)-3)-4)Rechtsklammerung 1 ∗ 2 ∗ 3 ∗ 4 (1*(2*(3*4)))

Kann auch bei Schachtelung und nicht-assoziativen Operatoren ver-

wendet werden:

1 : 2 : 3 : 4 : [] → 1 : (2 : (3 : (4 : [])))

Prioritaten von verschiedenen Operatoren und Argumenten:

1 + 2 ∗ 3− 4 → (1 + (2 ∗ 3))− 4

“Punktrechnung vor Strichrechnung“

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 27

Page 28: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Notationen

Standardnotation f(t1, . . . , tn)Prafixnotation (f t1 . . . tn) variable Stelligkeit moglichpolnische Prafixnotation f t1 . . . tn feste Stelligkeit(polnische Notation,Lukasiewicz-Notation)Standardpostfixnotation (t1, . . . , tn) fPostfixnotation t1 . . . tn f geeignet zu Auswertung(polnische Postfixnotation mit Stackreverse polish)Infixnotation (1 + 2) i.a. zweistellig

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 28

Page 29: Formale Sprachen, regul¨are und kontextfreie Grammatiken · Regul¨are formale Sprachen regul¨are Ausdrucke uber A. Definition der Syntax der regul¨aren Ausdr¨ucke ε (leeres

Notationen: Beispiele

Notationsvarianten von (1 + 2) ∗ 3

Standardnotation ∗(+(1,2),3)

Prafixnotation (∗ (+ 1 2) 3)

polnische Prafixnotation ∗ + 1 2 3

Standardpostfixnotation ((1,2)+,3)∗

Postfixnotation 1 2 + 3 ∗

Praktische Informatik 1, WS 2004/05, Folien Grammatik, (5. Januar2005) Seite 29