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