Wolfgang Hönig / Andreas Ecke WS 09/10
1 Regeln zur Bestimmung von Objektsprachen
1.1 Aufgabentyp
Zeigen Sie die Gleichung [...] schrittweise mit Hilfe der über den induktiven Aufbau von EBNF-Termen definierten Regeln zur Bestimmung von Objektsprachen.
1.2 Überblick
In jedem Schritt ist eine der folgenden Regeln anzuwenden:
1. α ∈V, d.h. α ist syntaktische Variable⇒JαK(ρ) =ρ(α) 2. α ∈Σ, d.h.α ist Terminalsymbol⇒JαK(ρ) ={α}
3. α =α1α2 ⇒JαK(ρ) =Jα1K(ρ)·Jα2K(ρ) 4. α = ˆ(α1ˆ|α2ˆ) ⇒JαK(ρ) =Jα1K(ρ)∪Jα2K(ρ) 5. α = ˆ{α1ˆ} ⇒JαK(ρ) = (Jα1K(ρ))∗
6. α = ˆ[α1ˆ]⇒JαK(ρ) =Jα1K(ρ)∪ {}
7. α = ˆ(α1ˆ) ⇒JαK(ρ) =Jα1K(ρ)
1.3 Grundidee
Es soll die Menge von Wörtern beschrieben werden, die ein gegebener EBNF-Term erzeugt.
Dafür wird eine Funktion benötigt, welche mindestens als einen Parameter den EBNF- Term bekommt und als Ergebnis die gesuchte Menge von Wörtern zurückgibt. Nun kann aber ein EBNF-Term auch eine syntaktische Variable enthalten, welche wiederum eine Menge von Wörtern beschreibt. Es wird also noch eine Hilfsfunktion benötigt, welche zu einer gegebenen syntaktischen Variablen die zugehörige Menge von Wörtern liefert. Diese Hilfsfunktion wird ρ genannt. Die eingangs erwähnte Funktion bekommt jetzt also zwei Parameter: Den EBNF-Term sowie die Hilfsfunktionρund liefert eine Menge von Wörtern als Ergebnis:
f(EBNF-Term, ρ)→ {Wörter}
Die Funktion kann jetzt noch umbenannt werden:
J.K(EBNF-Term, ρ)→ {Wörter}
Und schließlich kann man noch den ersten Parameter mit in den Funktionsnamen schreiben:
JEBNF-TermK(ρ)→ {Wörter}
Und schon erhält man die aus der Vorlesung bekannte Notation.
1
Wolfgang Hönig / Andreas Ecke WS 09/10
1.4 Erklärung am Beispiel
1.4.1 Aufgabe
SeiE = (V,Σ, S, R) mit V ={S, A},Σ ={a, b, c} undR ={S ::= ˆ(aAbˆ|ˆ[abˆ]ˆ), A::= ˆ{cˆ}}.
Berechnen Sie mit Hilfe der über den induktiven Aufbau von EBNF-Termen definierten Regeln zur Bestimmung von ObjektsprachenW(E, S).
1.4.2 Analyse
Die Sprache W(E, S) hängt von W(E, A) ab, daher ist es zweckmäßig diese zuerst zu berechnen. Ansonsten wird in irgendeinem Schritt JAK(ρ) = ρ(A) (Regel 1) ausgeführt werden müssen. Da aber die Funktionρunbekannt ist (kann z.B. durch Fixpunktsemantik berechnet werden), können wir dieses Problem in diesem Fall geschickt vermeiden.
1.4.3 Teilsprache
Wir wollen nun W(E, A) mit Hilfe der Regeln zur Bestimmung von Objektsprachen be- rechnen. Nach Definition (quasi Regel 0) gilt:
W(E, A) =JAK(ρ)
Der Ausdruck A kann nun aus der EBNF-Definition entnommen werden. Damit ergibt sich:
W(E, A) =JAK(ρ) =J{c}K(ρ) Jetzt können die Regeln angewendet werden:
W(E, A) =JAK(ρ) Regel 0
=Jˆ{cˆ}K(ρ) EBNF einsetzen
= (JcK(ρ))∗ Regel 5 mit α1 =c
= ({c})∗ Regel 2 mit α=c
={cn|n≥0} Definition Kleenestern
1.4.4 Zielsprache
Da nun die Vorarbeitet fertig ist, können wir W(E, S) berechnen. Durch Anwenden der Regeln ergibt sich:
2
Wolfgang Hönig / Andreas Ecke WS 09/10
W(E, S) =JSK(ρ) Regel 0
=Jˆ(aAbˆ|ˆ[abˆ]ˆ)K(ρ) EBNF einsetzen
=JaAbK(ρ)∪Jˆ[abˆ]K(ρ) Regel 4 mit α1 =aAbund α2 = ˆ[abˆ]
=JaAbK(ρ)∪JabK(ρ)∪ {} Regel 6 mit α1 =ab
=JaAbK(ρ)∪JaK(ρ)·JbK(ρ)∪ {} Regel 3 mit α1 =aund α2 =b
=JaAbK(ρ)∪ {a} ·JbK(ρ)∪ {} Regel 2 mit α=a
=JaAbK(ρ)∪ {a} · {b} ∪ {} Regel 2 mit α=b
=JaAbK(ρ)∪ {ab} ∪ {} Komplexprodukt
=JaK(ρ)·JAbK(ρ)∪ {ab} ∪ {} Regel 3 mit α1=aundα2=Ab
=JaK(ρ)·JAK(ρ)·JbK(ρ)∪ {ab} ∪ {} Regel 3 mit α1 =A und α2 =b
={a} ·JAK(ρ)·JbK(ρ)∪ {ab} ∪ {} Regel 2 mit α=a
={a} ·JAK(ρ)· {b} ∪ {ab} ∪ {} Regel 2 mit α=b
={a} ·W(E, A)· {b} ∪ {ab} ∪ {} Sprache einsetzen
={a} · {cn|n≥0} · {b} ∪ {ab} ∪ {} Ergebnis aus letztem Abschnitt einsetzen
={acn|n≥0} · {b} ∪ {ab} ∪ {} Komplexprodukt
={acnb|n≥0} ∪ {ab} ∪ {} Komplexprodukt
={acnb|n≥0} ∪ {} daab∈ {acnb|n≥0}
1.5 Anmerkungen
1.5.1 Umfang
„Schrittweise“ in der Aufgabenstellung ist zu realisieren, d.h. es sollte pro Schritt nur eine Regel angewendet werden.
1.5.2 Zusammenhang mit der Fixpunktsemantik
Die Regeln zur Bestimmung von Objektsprachen ist nur anwendbar, wenn keine Abhän- gigkeiten zwischen den einzelnen Regeln vorhanden sind. Das heißt insbesondere, dass es mindestens eine Regel geben muss, die keine syntaktische Variable enthält.
Die Fixpunktsemantik hingegen funktioniert auch in den anderen Fällen, da sie schritt- weise arbeitet. Durch die schrittweise Abarbeitung ist es allerdings auch nicht möglich nach endlich vielen Schritten eine unendliche Sprache eindeutig zu definieren (Falls man eine Vermutung hat, kann jedoch vorzeitig ein Induktionsbeweis geführt werden.). Die Re- geln zur Bestimmung von Objektsprachen liefern dagegen nach endlich vielen Schritten ein eindeutiges (und richtiges) Ergebnis.
3
Wolfgang Hönig / Andreas Ecke WS 09/10
Übersicht
Regeln zur Bestimmung von Ob- jektsprachen
Fixpunktsemantik anwendbar falls es keine Abhängigkeiten zwi-
schen den Regeln gibt
immer
Terminierung nach endlich vielen Schritten Nie (aber nach Vermutung Abbruch und Induktionsbeweis möglich.)
Korrektheit bei korrekter Regelanwendung korrekt; kein Beweis nötig.
Induktionsbeweis nötig
4