Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von...

14
- 14 - I.2. Grundlagen von Programmiersprachen Alphabet, formale Sprache Alphabet nichtleere endliche Menge von Zeichen („Buchstaben“, Symbole) Wort über einem Alphabet endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) A* bezeichnet die Menge aller Wörter über dem Alphabet A (inkl. dem leeren Wort) Formale Sprache Sei A ein Alphabet. Eine (formale) Sprache (über A) ist eine beliebige Teilmenge von A*. Endliche Beschreibungsvorschrift für unendliche Sprachen Grammatik, die Sprache erzeugt, oder Automat, der Sprache erkennt

Transcript of Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von...

Page 1: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 14 - I.2. Grundlagen von Programmiersprachen

Alphabet, formale Sprache n  Alphabet

l  nichtleere endliche Menge von Zeichen („Buchstaben“, Symbole)

n  Wort über einem Alphabet l  endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l  A* bezeichnet die Menge aller Wörter über dem Alphabet A (inkl. dem

leeren Wort)

n  Formale Sprache l  Sei A ein Alphabet. Eine (formale) Sprache (über A) ist eine beliebige

Teilmenge von A*.

n  Endliche Beschreibungsvorschrift für unendliche Sprachen l  Grammatik, die Sprache erzeugt, oder Automat, der Sprache erkennt

Page 2: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 15 - I.2. Grundlagen von Programmiersprachen

Beispiele

n  Beispiel 1 l  A1 = { 0,1}, A1* = {ε , 0, 1, 01, 10, 11, 000, 100 , … } l  L = {0, 1, 10, 11, 100, 101, .. } ⊆ A1*, die Menge der Binärdarstellungen

natürlicher Zahlen (mit Null, ohne führende Nullen)

n  Beispiel 2 l  A2 = {(, ), +, -, *, /, a}, A2* = {ε, (), (+-a), (a*a), … } l  die Sprache der korrekt geklammerten Ausdrücke EXPR ⊆ A2* :

EXPR = { (((a))), (a + a), (a - a)*a + a /(a + a) -a, .. }

Page 3: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 16 - I.2. Grundlagen von Programmiersprachen

Grammatik - informell n  Definiert Regeln, die festlegen, welche Wörter über einem

Alphabet zur Sprache gehören und welche nicht.

n  Beispiel: Grammatik für "Hund-Katze-Sätze"

1 Satz → Subjekt Prädikat Objekt 2 Subjekt → Artikel Attribut Substantiv 3 Artikel → ε 4 Artikel → der 5 Artikel → die 6 Artikel → das 7 Attribut → ε 8 Attribut → Adjektiv 9 Attribut → Adjektiv Attribut 10 Adjektiv → kleine 11 Adjektiv → bissige 12 Adjektiv → große 13 Substantiv → Hund 14 Substantiv → Katze 15 Prädikat → jagt 16 Objekt → Artikel Attribut Substantiv

Page 4: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 17 - I.2. Grundlagen von Programmiersprachen

Grammatik - informell n  Grammatik für "Hund-Katze-Sätze"

l  durch diese Grammatik können z.B. die folgenden Sätze gebildet (abgeleitet) werden "der kleine bissige Hund jagt die große Katze" "die kleine Katze jagt der bissige Hund"

"das große Katze jagt der kleine große bissige kleine …. Katze"

l  folgende "Sätze" werden nicht durch diese Grammatik gebildet "die Katze der Hund" "Katze und Hund"

"der Hund jagt die Katze die jagt Hund"

Page 5: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 18 - I.2. Grundlagen von Programmiersprachen

Grammatik - Definition - 1

n  Definition: l  Eine Grammatik G ist definiert durch ein Viertupel (N, T, P, S)

n  N: endliche Menge der Nichtterminalsymbole (Variablen) l  sind Symbole für syntaktische Abstraktionen l  Beispiel: Satz, Subjekt, Prädikat, Objekt, Artikel, Attribut, Substantiv, Adjektiv l  kommen nicht in den Wörtern der Sprache vor l  werden durch Anwendung der Produktionsregeln solange ersetzt, bis nur

noch Terminalsymbole übrig sind

n  T: endl. Menge der Terminalsymbole, disjunkt mit N: N ∩ T = ∅ l  sind Zeichen des Alphabets, aus denen die Wörter der Sprache bestehen l  Beispiel: der, die, das, kleine, bissige, große, Hund, Katze, jagt

Page 6: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 19 - I.2. Grundlagen von Programmiersprachen

Grammatik - Definition - 2 n  P: endliche Menge von Produktionsregeln x → y

l  Regel x → y bedeutet, dass das Teilwort x durch das Teilwort y ersetzt werden kann

l  x ∈ V* N V*, y ∈ V*, wobei V = N ∪ T (Vokabular). D.h.: sowohl x als auch y können beliebige Nichtterminal- und Terminalsymbole enthalten, x enthält mindestens ein Nichtterminal.

l  Beispiel: Prädikat → jagt der kleine bissige Hund Prädikat Objekt der kleine bissige Hund jagt Objekt

n  S: das Startsymbol l  ist ein spezielles Nichtterminalsymbol aus N, aus dem alle Wörter der

Sprache mit Hilfe der Grammatik erzeugt werden l  Beispiel: Satz

Page 7: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 20 - I.2. Grundlagen von Programmiersprachen

Grammatik - Definition - 3 n  Ableitung

l  Ableitungsprozess ist eine Relation "⇒" auf V* l  Für u, v, y ∈ V * und x ∈ V *NV* gilt

w  uxv ⇒ uyv falls (x → y) ∈ P

n  Die von der Grammatik G erzeugte Sprache ist: l  L(G) = { w | w ∈ T*, S ⇒ ... ⇒ w}

l  D.h.: Jedes durch Anwendung der Regeln aus S erzeugbare Wort, das nur aus Terminalsymbolen besteht, gehört zu der Sprache L(G)

l  zwei Grammatiken heißen äquivalent, wenn sie dieselbe Sprache erzeugen

w ist ableitbar aus dem Startsymbol

Page 8: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 21 - I.2. Grundlagen von Programmiersprachen

Kontextfreie Grammatik / Sprache n  Produktionsregeln: A → y A ∈ N, y ∈ V*

d.h.: Links steht genau ein Nichtterminalsymbol

n  Wichtigste Klasse zur formalen Beschreibung der Syntax von Programmiersprachen.

n  Es ist möglich, Automaten zu bauen, die Wörter einer kontextfreien Sprache erkennen (Wortproblem) und ihre syntaktische Struktur analysieren (Compilerbau)

n  Notationen zur Darstellung kontextfreier Grammatiken l  Syntaxdiagramme l  Extended Backus-Naur-Form (EBNF)

Page 9: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 22 - I.2. Grundlagen von Programmiersprachen

Grammatik - Beispiel n  Sei G = (N, T, P, S) mit

l  N = {A, B} l  T = {a, b, c, d} l  P = { A → aBbc,

B → aBb, aBb → d }

l  S = A

L(G) = { a d b c | n ≥ 0} n n

l  G ist keine kontextfreie Grammatik, da die dritte Produktionsregel auf der linken Seite mehr als nur das Nichtterminalsymbol B enthält.

n  Ersetzt man in G die Produktionen P durch P', dann ist G' kontextfrei. Es gilt L(G) = L(G'). l  P' = { A → Bc,

B → aBb, B → d }

Page 10: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 23 - I.2. Grundlagen von Programmiersprachen

EBNF n  EBNF (Extended Backus-Naur-Form)

l  kompaktere Repräsentation kontextfreier Grammatiken

l  BNF erstmals benutzt zur Definition der Sprache Algol-60

l  EBNF-Notation w  = „definiert als“ w  (...|...) genau eine Alternative aus der Klammer muss kommen w  [ ... ] Inhalt der Klammer kann kommen oder nicht w  { ... } Inhalt der Klammer kann n-fach kommen, n ≥ 0 w  Terminalsymbole werden in " " eingeschlossen

Page 11: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 24 - I.2. Grundlagen von Programmiersprachen

Beispiel - Grammatik

1 Satz → Subjekt Prädikat Objekt 2 Subjekt → Artikel Attribut Substantiv 3 Artikel → ε 4 Artikel → der 5 Artikel → die 6 Artikel → das 7 Attribut → ε 8 Attribut → Adjektiv 9 Attribut → Adjektiv Attribut 10 Adjektiv → kleine 11 Adjektiv → bissige 12 Adjektiv → große 13 Substantiv → Hund 14 Substantiv → Katze 15 Prädikat → jagt 16 Objekt → Artikel Attribut Substantiv

Page 12: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 25 - I.2. Grundlagen von Programmiersprachen

Beispiel in EBNF n  Unsere einfache Grammatik für "Hund-Katze-Sätze" sieht in

EBNF folgendermaßen aus:

Satz = Subjekt Prädikat Objekt Subjekt = Artikel Attribut Substantiv Artikel = [ ("der" | "die" | "das") ] Attribut = { Adjektiv } Adjektiv = ("kleine" | "bissige" | "große") Substantiv = ("Hund" | "Katze") Prädikat = "jagt" Objekt = Artikel Attribut Substantiv

Page 13: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 26 - I.2. Grundlagen von Programmiersprachen

Syntaxdiagramme - 1 n  Syntaxdiagramme (beschreiben Produktionen grafisch)

l  Nichtterminalsymbole sind Rechtecke l  Terminalsymbole sind rund / oval

Artikel Attribut Substantiv

Subjekt

Adjektiv

Attribut

Artikel

der

die

das

Page 14: Alphabet, formale Sprache€¦ · Objekt = Artikel Attribut Substantiv . I.2. Grundlagen von Programmiersprachen - 26 - Syntaxdiagramme - 1 ! Syntaxdiagramme (beschreiben Produktionen

- 27 - I.2. Grundlagen von Programmiersprachen

Syntaxdiagramme - 2

Alternative: Rekursives Syntaxdiagramm

Adjektiv Attribut

Attribut

Adjektiv

Attribut