====== Syntaxdiagramme ====== Eine alternative Möglichkeit, Produktionsregeln zu notieren, bieten **Syntaxdiagramme**. Ihren Aufbau verstehen Sie am besten, indem Sie das folgende Beispiel ansehen. ===== Beispiel 1: Eurobeträge ===== Die Grammatik G = (V, A, P, S) über dem Alphabet A = {"0", "1", ..., "9", ",", " ", "€"} mit der Menge der Nichtterminale V = {Eurobetrag, Vorkommastellen, ZahlOhneVornullen, ZifferOhneNull, Ziffer}, dem Startsymbol S = Eurobetrag und den mit folgendem Syntaxdiagramm gegebenen Produktionsregeln beschreibt die Menge aller Eurobeträge. {{ :formalesprachen:syntaxdiagramm_eurobetrag.png?600 |}} ===== Entsprechung EBNF <-> Syntaxdiagramm ===== In obigem Beispiel sind alle Kurzformen der EBNF enthalten: R1: ZifferOhneNull = "1" | "2" | ... | "9" R2: Ziffer = ZifferOhneNull | "0" R3: ZahlOhneVornullen = ZifferOhneNull { Ziffer } R4: Vorkommastellen = ZahlOhneVornullen | "0" R5: Eurobetrag = Vorkommastellen ["," Ziffer Ziffer] " " "€" (Regel R1: Oder-Operator; Regel R3: Wiederholung; Regel R5: Option) ===== Aufgabe 1: ===== Gegeben sei eine sehr einfache Programmiersprache, in der nur * Variablenbezeichner (bestehend aus den Buchstaben a bis z), * ganze Zahlen (ohne Vornullen, aber beliebig groß) * die Operatoren + und - * runde Klammern * der Zuweisungsoperator = * der Anweisungsende-Operator ; vorkommen. Ein Programm ist entweder leer oder besteht aus einer Folge von Zuweisungen, die jeweils mit einem Strichpunkt enden, z.B. alter=12+(3-4);r=3+(10-(alter+b-5)); **a)** Geben Sie eine Grammatik in EBNF an, die Programme dieser Programmiersprache beschreibt. \\ **b)** Übersetzen Sie die Produktionsregeln dieser Grammatik in ein Syntaxdiagramm. [[.aufgabe1loesung:start|Lösung]]