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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
Top Related