====== Erzeugung formaler Sprachen ====== Um festzulegen, welche Wörter zu einer Sprache gehören, formuliert man meist eine **Menge von Regeln (Syntax)**, nach denen alle Wörter der Sprache aus ihrem Alphabet gebildet werden können (**Produktionsregeln**). \\ Die Bildung eines Wortes mithilfe der Produktionsregeln nennt man seine **Ableitung**. ===== Beispiel: Bezeichnung von Fernstraßen in Deutschland ==== Die [[https://de.wikipedia.org/wiki/Liste_der_Bundesautobahnen_in_Deutschland|Bezeichnungen aller Bundsstraßen und Autobahnen in Deutschland]] ist eine Sprache über dem Alphabet A = {A, B, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, die durch folgende **Produktionsregeln** ( = Syntax) definiert wird: R1: Fernstraße = Autobahn R2: Fernstraße = Bundesstraße R3: Autobahn = "A"ZahlMaxDreistellig R4: Bundestraße = "B"ZahlMaxDreistellig R7: ZahlMaxDreistellig = Ziffer R6: ZahlMaxDreistellig = ZifferZiffer R8: ZahlMaxDreistellig = ZifferZifferZiffer R9: Ziffer = "1" R10: Ziffer = "2" R11: Ziffer = "3" R12: Ziffer = "4" R13: Ziffer = "5" R14: Ziffer = "6" R15: Ziffer = "7" R16: Ziffer = "8" R17: Ziffer = "9" R18: Ziffer = "0" **Begriffe:** \\ Kommt in den Produktionsregeln ein Element des Alphabets vor, so bezeichnet man es als **Terminal**, weil es sich im Verlauf der Ableitung eines Wortes nicht mehr ändert. Die Variablen ''Fernstraße'', ''Autobahn'', ... bezeichnet man als **Nichtterminale**, weil sie im Lauf der Ableitung noch ersetzt werden müssen. \\ \\ **Kurzschreibweise:** \\ Falls mehrere Produktionsregeln auf der linken Seite das selbe Nichtterminalsymbol haben, kann man sie mit Hilfe des Operators | ("oder") zu einer zusammenfassen. Die Regeln 9 - 18 oben kann man bspw. zusammenfassen zu \\ Ziffer = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "0" **Backus-Naur-Form** \\ Die oben beschriebene Form, mit der wir Produktionsregeln angeben können, bezeichnet man als [[https://de.wikipedia.org/wiki/Backus-Naur-Form|Backus-Naur-Form]] (**BNF**). Wir werden etwas später noch die [[https://de.wikipedia.org/wiki/Erweiterte_Backus-Naur-Form|erweiterte Backus-Naur-Form]] (**EBNF**) kennenlernen, die exakt gleich mächtig ist, jedoch in vielen Fällen eine kompaktere, griffigere Darstellung der Produktionen ermöglicht. ===== Aufgabe 1 ===== Geben Sie die **Ableitungen** der Wörter "A34" und "B903" an und zeichnen Sie zur ersten der beiden Ableitungen einen **Ableitungsbaum**. ==== Lösung ==== $$Fernstraße\xrightarrow[]{(R1)}Autobahn\xrightarrow[]{(R3)}\mathrm{"A"}ZahlMaxDreistellig\xrightarrow[]{(R6)}\mathrm{"A"}Ziffer\ Ziffer$$ $$\xrightarrow[]{(R11)}\mathrm{"A3"}Ziffer\xrightarrow[]{(R12)}\mathrm{"A34"}Ziffer$$ \\ \\ $$Fernstraße\xrightarrow[]{(R2)}Bundesstraße\xrightarrow[]{(R4)}\mathrm{"B"}ZahlMaxDreistellig\xrightarrow[]{(R8)}\mathrm{"B"}Ziffer\ Ziffer\ Ziffer$$ $$\xrightarrow[]{(R17)}\mathrm{"B9"}Ziffer\ Ziffer\xrightarrow[]{(R18)}\mathrm{"B90"}Ziffer\xrightarrow[]{(R11)}\mathrm{"B903"}$$ Zur ersten der beiden Ableitungen hier der **Ableitungsbaum**: {{ :formalesprachen:pasted:20250714-145442.png?400 }} ===== Aufgabe 2 ===== Ist die Ableitung eines Wortes immer eindeutig? Begründen Sie Ihre Antwort beispielhaft mit den obigen Produktionsregeln! **Definition:** \\ \\ Eine **formale Grammatik** $$G = (V, A, P, S)$$ besteht aus * der Menge der **Nichtterminale** $V$ * dem **Alphabet** $A$ * einer Menge von **Produktionsregeln** $P$ und * einem Startsymbol $S\in V$ Dabei müssen $A$ und $V$ disjunkt sein, d.h. $A \bigcap V = \{\}$. \\ $G$ definiert eine **formale Sprache**, die aus allen Wörtern aus $A^*$ besteht, die aus dem Startsymbol $S$ durch Anwendung endlich vieler Produktionsregeln aus $P$ abgeleitet werden können. ===== Aufgabe 3 ===== a) Geben Sie eine Grammatik an, die Sprache beschreibt, in der deutsche Autokennzeichen notiert werden. * Die Sprache soll alle Autokennzeichen der Formen "ND WW 16" und "IN XE 312E" beschreiben (Ortskürzel mit bis zu drei Buchstaben, Zwischenbereich mit bis zu zwei Buchstaben, ein- bis dreistellige Zahl, optional "E" am Ende). * Auch nichtexistente Ortskürzel dürfen vorkommen. b) Geben Sie zur Grammatik aus a) die Ableitung des Kennzeichens "SOB AX 12E" an. \\ [[.aufgabe3loesung:start|Lösung]] ===== Rekursive Produktionsregeln ===== Gegeben ist die Grammatik $G = (V, A, P, S)$ mit dem Alphabet $A=\{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\}$, den Nichtterminalen $V=\{Zahl,\ Ziffer\}$, dem Startsymbol $S = Zahl$ und folgenden Produktionsregeln: R1: Zahl = Ziffer | Ziffer Zahl R2: Ziffer = "0" | "1" | ... | "9" \\ \\ Beschreiben Sie die Semantik der erzeugten Sprache! Inwiefern sind diese Produktionsregeln rekursiv? ===== Aufgabe 4 ===== Erweitern sie obige Grammatik G so, dass die Sprache genau die Dezimaldarstellungen aller ganzen Zahlen umfasst, wobei keine Vornullen erlaubt sein sollen. ===== Aufgabe 5 ===== Geben Sie eine Grammatik einer Sprache an, die alle ungeklammerten Terme enthält, die * nur die Rechenzeichen + und - sowie * als Operanden nur die Variablen a, b und c besitzen. Gemeint sind also Terme der Form $a$, $b$, $c$, $a + b$, $a - b$, $a + b - c$, $a + a - b + b$ usw. ===== Aufgabe 6 ====== Die Sprache aller symmetrischen Wörter über den Alphabet $A = \{a, b\}$ enthält das leere Wort $\varepsilon$, die Wörter $a$, $b$, $aa$, $bb$, $aba$, usw. \\ \\ Geben Sie eine Grammatik an, die diese Sprache erzeugt.