Formale Sprachen, reguläre und kontextfreie Grammatiken

Transcrição

Formale Sprachen, reguläre und kontextfreie Grammatiken
Formale Sprachen, reguläre und kontextfreie
Grammatiken
Alphabet A:
Wort über A:
A∗: volle Sprache über A:
formale Sprache über A:
leeres Wort
Konkatenation
Länge eines Wortes t:
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
endliche Menge von Zeichen
endliche Folge von Zeichen aus A
Menge der A-Worte
eine Teilmenge von A∗
ε
s.t (Zusammenhängen von s und t)
teilweise als st geschrieben
Anzahl der Zeichen in t.
(5. Januar2005)
Seite 1
Beispiele: formale Sprachen
1. Alphabet A = {0, 1},
A∗ = Menge aller Binärzahlen
{0, 1}
Menge der Binärziffern ( Bits )
{0, 1}8
Menge der Binärfolgen der Länge 8.
= Menge der Worte der Länge 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.
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 2
Reguläre formale Sprachen
reguläre Ausdrücke über A.
Definition der Syntax der regulären Ausdrücke
ε
a
(r + s), (rs) und (r∗)
(leeres Wort)
für a ∈ A
Wenn r und s reguläre Ausdrücke
Erweiterungen bzw. Abkürzungen:
rn
mit rn = r| .{z
. . r}
n
[r]
mit [r] := r + ε
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 3
Beispiele: reguläre Ausdrücke
1. (0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9)∗
Alle endlichen Ziffernfolgen (natürliche Zahlen)
2. (0)∗ entspricht {ε, 0, 00, 000, 0000, . . .}.
3. 1((0 + 1)∗)
Binärdarstellungen aller positiven ganzen Zahlen ohne führende
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 über dem Alphabet
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, “, “}
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 4
Reguläre Operatoren auf formalen Sprache
Seien R und S formale Sprachen über dem Alphabet A.
RS := {uv | u ∈ R, v ∈ S}.
definiere Rn:
R0 := {ε}
R1 := R
Rn := RRn−1 wenn (n > 1)
R∗ :=
R+ :=
S
{Rn | n ≥ 0}
S
n
P raktische Inf ormatik
(Kleene-)Abschluß
positiver Abschluß
{R | n ≥ 1}.
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 5
Semantik von regulären Ausdrücken
Idee: Der reguläre Ausdruck r beschreibt eine formale Sprache I(r)
I(ε)
I(a)
I((r + s))
I((rs))
I(r∗)
P raktische Inf ormatik
1, W S
:=
:=
:=
:=
:=
{ε}
{a} für a ∈ A
I(r) ∪ I(s)
I(r)I(s)
(I(r))∗
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 6
Beispiele
Alphabet {a, b, c}
I(ab∗)
= {a, ab, abb, abbb, . . .}
I(a+cb∗) =
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
{ ac, aac, aaac, . . . ,
acb, aacb, aaacb, . . . ,
acbb, aacbb, aacbbb, . . .
...
}
(5. Januar2005)
Seite 7
Reguläre formale Sprache
Eine formale Sprache L nennt man regulär,
wenn es einen regulären Ausdruck gibt,
der L erzeugt.
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 8
Kontextfreie Grammatiken und Sprachen
Verwendung:
Syntax von Programmiersprachen,
Zahldarstellungen,
Syntax der Aussagen- und Prädikatenlogik
Definition kontextfreie Grammatik (context free grammar, CFG)
G = (N, T, P, σ) mit den Komponenten:
N
T
σ∈N
P ⊆ N × (N ∪ T )∗
Nichtterminale: Hilfszeichen , Nonterminals
Terminalzeichen (Terminals),
das eigentliche Alphabet, mit N ∩ T = ∅
Startzeichen
Produktionensystem, Regeln
(A, w) ∈ P heißt Produktion oder Regel von G.
statt (A, w) ∈ P schreibt man auch A → w.
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 9
Backus-Naur-Form (BNF)
kontextfreie Syntax höherer Programmiersprachen
Metasymbole sind:
h
i
::=
|
hZahli ist Nichtterminalsymbol
Definition“eines Nichtterminals
”
Trennt Alternativen
Beispiel hZifferi ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
entspricht 10 Regeln einer CFG.
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 10
Erweiterungen der BNF
hZahli ::= hZifferi+
entspricht:
hZahli ::= hZifferi | hZifferihZahli
hZahl mit Vorzeicheni ::= [+|−]hZahli
entspricht:
hZahl mit Vorzeicheni ::= +hZahli | hZahli | − hZahli
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 11
Beispiel: Syntax von Programmiersprachen
Regeln:
hAusdrucki
hAusdrückei
hZahli
hZifferi
hBezeichneri
hZeichenkettei
hBuchstabei
hZeicheni
Nichtterminale:
Terminale:
Startsymbol:
P raktische Inf ormatik
1, W S
::=
::=
::=
::=
::=
::=
::=
::=
hBezeichneri | hZahli | (hAusdrückei)
hAusdrucki | hAusdruckihAusdrückei
hZifferi | hZifferihZahli
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
hBuchstabei | hBuchstabeihZeichenkettei
hZeicheni | hZeichenihZeichenkettei
A | B | C | D | ...
hZifferi | hBuchstabei
hAusdrucki, . . .
{0, 1, . . . , 9, A, . . .}
Ein Nichtterminal (sinnvoll: hAusdrucki).
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 12
Beispiel: Syntax von Programmiersprachen
Regulär beschreibbare Anteile
hZahli
(0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9)∗
hBezeichneri
(A + . . . + Z)(A + . . . + Z + 0 + 1 + . . . + 9)∗
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 13
Erzeugte formale Sprache zur CFG G
Definition
Gegeben G = (N, T, P, σ).
Herleitung:
σ → w1 → . . . → wn
Jeder Übergang:
P raktische Inf ormatik
1, W S
wi → wi+1 ist von der Form:
sat → sbt und a → b ist eine Regel in G
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 14
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 können.
Die so erzeugbaren formalen Sprachen nennt man kontextfrei.
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 15
Beispiele zu L(G)
σ
::= hZahli
hZahli ::= hZifferi | hZifferihZahli
hZifferi ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
σ
→ hZahli → hZifferihZahli
→ hZifferihZifferihZahli → hZifferihZifferihZifferi
→ 1hZifferihZifferi → 12hZifferi → 123
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 16
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 repräsentiert
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 17
Ableitungsbaum (Herleitungsbaum): Beispiel
Grammatik zu arithmetischen Ausdrücken über den Zahlen :
E → (E + E), E → (E ∗ E), E → Z, Z → {0, 1, ..., 9}∗
Ein Herleitungsbaum für den Ausdruck ((1 + 2) ∗ 3) ist:
E
(
iiio
?N?NNN
iioioiooo
i
?? NNN
i
i
ii oooo
?? NNN
i
i
i
NNN
??
ii oooo
i
i
i
NNN
ii
wooo
'
tiiii
N
N
p
>> NNN
pp
>> NNN
ppp
p
>> NNN
p
p
p
>>
NNN
p
p
p
>
NNN
p

p
N'
px p
(
E
E
+
1, W S
2004/05, F olien Grammatik,
Z
Z
1
P raktische Inf ormatik
E
(5. Januar2005)
2
Seite 18
∗
E
)
Z
3
)
Syntaxbaum
Syntaxbaum wird aus Herleitungsbaum bestimmt.
Oft Basis einer operationalen Semantik
Beispiel: Syntaxbaum für den Ausdruck ((1 + 2) ∗ 3)
}
}}
}}
}
}~ }
1
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
~
~~
~
~
~ ~
(5. Januar2005)
∗ ???
??
??
?
+ @@
@@
@@
@
Seite 19
2
3
Zusammenhänge
Es gilt:
Reguläre Sprachen sind kontextfrei.
Es gibt kontextfreie Sprachen, die nicht regulär sind.
Es gibt auch formale Sprachen, die nicht kontextfrei sind.
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 20
Programme einer Programmiersprache
Erzeugung der zulässigen Programme:
Stufe 1
Stufe 2
CFG erzeugt syntaktisch zulässige Programme
Kontextbedingungen, Typbedingungen schränken weiter ein.
Beispiele für Stufe 2:
Deklarationen von Variablen vor ihrer Benutzung
Ausdrücke müssen getypt sein (in Haskell)
Variablen verschieden in Funktionsdefinition (Haskell, Python)
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 21
Syntaxdiagramme
sind eine graphische Form einer CFG
Pascal
statement
repeat
expression
until
;
repeat im Oval:
Rechteck
String als Terminalsymbol
Nichtterminalsymbol
Die Pfeile bezeichnen erlaubte Durchlaufrichtungen.
Äquivalente BNF:
hrepeat-expri ::= repeat hstatementsi until hexpressioni
hstatementsi ::= hstatementi | hstatementi;hstatementsi
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 22
Mehrdeutige Grammatiken und Sprachen
Mehrdeutigkeit einer Grammatik G:
Es gibt ein Wort w mit mehr als einem Ableitungsbaum
⇒ Semantik nicht eindeutig
Überladen von Symbolen:
− als Subtraktion bzw. “Negativ-machen“
−1 − 2
Es gibt sogar inhärent mehrdeutige kontextfreie Sprachen, d.h. solche
für die nur mehrdeutige kontextfreie Grammatiken existieren.
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 23
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 möglichen Syntaxbäumen zu diesem Ausdruck.
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 24
Beispiel 2
Arithmetische Ausdrücke; mit Grammatik:
A ::= Zahl | V ariable | A + A | A − A | . . .
Der Ausdruck 1 − 2 − 3 hat zwei mögliche Interpretationen:
(1 − 2) − 3 oder 1 − (2 − 3)
Notationen von Ausdrücken, Terme
Varianten der Notation von geschachtelten Ausdrücken.
Stelligkeit von Operatoren :
fest
variabel
f(a,b,c)
(∗ 1 2 3 4), oder
Positionierung
von
Operatoren
prefix
(+ 1 2)
infix
1+2
postfix 1 2 +
mixfix (IF A THEN B ELSE C)
lineare Notation → Syntaxbaum → Term
Beispiel −1 − 2 → SUBTRACT(NEGATE(1), 2)
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 26
und
Argumenten:
Notationen von Ausdrücken, 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 verwendet werden:
1 : 2 : 3 : 4 : [] → 1 : (2 : (3 : (4 : [])))
Prioritäten von verschiedenen Operatoren und Argumenten:
1 + 2 ∗ 3 − 4 → (1 + (2 ∗ 3)) − 4
“Punktrechnung vor Strichrechnung“
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 27
Notationen
Standardnotation
Präfixnotation
polnische Präfixnotation
(polnische Notation,
Lukasiewicz-Notation)
Standardpostfixnotation
Postfixnotation
(polnische Postfixnotation
reverse polish)
Infixnotation
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
f (t1, . . . , tn)
(f t1 . . . tn)
f t1 . . . tn
(t1, . . . , tn) f
t1 . . . tn f
(1 + 2)
(5. Januar2005)
Seite 28
variable Stelligkeit möglich
feste Stelligkeit
geeignet zu Auswertung
mit Stack
i.a. zweistellig
Notationen: Beispiele
Notationsvarianten von (1 + 2) ∗ 3
Standardnotation
∗(+(1, 2), 3)
Präfixnotation
(∗ (+ 1 2) 3)
polnische Präfixnotation
∗ + 1 2 3
Standardpostfixnotation
((1, 2)+, 3)∗
Postfixnotation
1 2 + 3 ∗
P raktische Inf ormatik
1, W S
2004/05, F olien Grammatik,
(5. Januar2005)
Seite 29

Documentos relacionados