Download - Formale Sprachen, regul¨are und kontextfreie Grammatiken · 2020. 12. 15. · Definition kontextfreie Grammatik (context free grammar, CFG) G = (N,T,P,σ) mit den Komponenten: N

Transcript
  • Formale Sprachen, reguläre und kontextfreie

    Grammatiken

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

    leeres Wort εKonkatenation s.t (Zusammenhängen von s und t)

    teilweise als st geschriebenLänge 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 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 KleinbuchstabenPalindrome: {a1 . . . an ∈ A∗ | a1 . . . an = an . . . a1}

    3. {ε} ist eine formale Sprache.

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

  • Reguläre formale Sprachen

    reguläre Ausdrücke über A.

    Definition der Syntax der regulären Ausdrücke

    ε (leeres Wort)a für a ∈ A(r + s), (rs) und (r∗) Wenn r und s reguläre Ausdrücke

    Erweiterungen bzw. Abkürzungen:

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

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

    Praktische Informatik 1, WS 2004/05, Folien 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,“,“}

    Praktische Informatik 1, WS 2004/05, Folien 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 := RRn := 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 regulären Ausdrücken

    Idee: Der reguläre Ausdruck r beschreibt eine formale Sprache I(r)

    I(ε) := {ε}I(a) := {a} für 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

  • Reguläre formale Sprache

    Eine formale Sprache L nennt man regulär,

    wenn es einen regulären 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 Prädikatenlogik

    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 höherer Programmiersprachen

    Metasymbole sind:

    〈 〉 〈Zahl〉 ist Nichtterminalsymbol::=

    ”Definition“eines Nichtterminals

    | Trennt Alternativen

    Beispiel 〈Ziffer〉 ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9entspricht 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〉 | (〈Ausdrücke〉)〈Ausdrücke〉 ::= 〈Ausdruck〉 | 〈Ausdruck〉〈Ausdrücke〉〈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

    Regulär 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 Übergang: 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 Anwendungder Produktionen hergeleitet werden können.

    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 repräsentiert

    Praktische Informatik 1, WS 2004/05, Folien 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

    ttiiiiiiii

    iiiiiiii

    iiiiiiii

    ii

    wwoooooo

    oooooo

    ooooo

    �� ��??

    ????

    ??

    ''NNNNN

    NNNNNN

    NNNNN

    ( E

    xxpppppp

    pppppp

    ppppp

    ����

    ����

    �� ��>>>

    >>>>

    >>

    ''NNNNN

    NNNNNN

    NNNNNN

    N ∗ 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 für den Ausdruck ((1 + 2) ∗ 3)

    ∗~~}}

    }}}}

    }}

    ��???

    ????

    ?

    +

    ~~~~

    ~~~

    ��@@@

    @@@@

    3

    1 2

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

  • 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.

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

  • Programme einer Programmiersprache

    Erzeugung der zulässigen Programme:

    Stufe 1 CFG erzeugt syntaktisch zulässige Programme

    Stufe 2 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)

    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.

    Äquivalente 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

    Ü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.

    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 möglichen Syn-

    taxbäumen zu diesem Ausdruck.

    Praktische Informatik 1, WS 2004/05, Folien 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 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 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 ver-

    wendet 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“

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

  • Notationen

    Standardnotation f(t1, . . . , tn)Präfixnotation (f t1 . . . tn) variable Stelligkeit möglichpolnische Präfixnotation 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)

    Präfixnotation (∗ (+ 1 2) 3)

    polnische Präfixnotation ∗ + 1 2 3

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

    Postfixnotation 1 2 + 3 ∗

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