Inhaltsverzeichnis
Erweiterte Backus-Naur-Form (EBNF)
Neben den Metazeichen für Auswahl (|) und Gruppierung (runde Klammern), die in der BNF verwendet werden können, besitzt die EBNF (extended Backus-Naur-form) noch folgende:
- [ A ] bedeutet, dass A an dieser Stelle 0- oder 1-mal vorkommt ("Option")
- { A } bedeutet, dass A an dieser Stelle beliebig oft (auch 0-mal) hintereinander stehen kann ("Wiederholung").
Beispiel 1: Längenangaben mit maximal zwei Dezimalstellen
R0: Länge = Ganzzahl [ "," Nachkommastellen ];
R1: Ganzzahl = "0" | ( EinsBisNeun { NullBisNeun } );
R2: Nachkommastellen = NullBisNeun [ NullBisNeun ];
R3: EinsBisNeun = "1" | "2" | ... | "9";
R4: NullBisNeun = "0" | EinsBisNeun;
Bemerkungen:
- R2 zeigt, wie sich ein Wortteil erzeugen lässt, der mindestens ein Mal vorkommt.
- Es gibt leider keine allgemein anerkannte Definition von EBNF (siehe auch den Wikipedia-Artikel dazu). Daher ist auch die Operratorrangfolge (Präzendenz) nirgends wirklich eindeutig geregelt. Im Zweifelsfall (wie bei R1): Lieber Klammern setzen!
Aufgabe 1:
a)
Geben Sie die Grammatik einer Sprache in EBNF an, die alle Eurobeträge mit und ohne Nachkommastellen umfasst, also bspw. (ohne die Anführungszeichen): "125 €", "210,25 €", "32423,13€"
Genauer:
- Die Beträge können beliebig viele Vorkommastellen haben, aber keine Vornullen (z.B. nicht "0012,13 €")
- Die Beträge haben entweder keine Nachkommastellen oder exakt zwei.
- Zwischen den Vorkomma- und Nachkommastellen steht ein Komma.
- Zwischen der Maßzahl und der Einheit "€" steht ein Leerzeichen.
Erinnerung: Vergessen Sie nicht, in Ihrer Lösung alle formalen Bestandteile der Grammatik zu nennen!
b)
Zeichen Sie den Ableitungsbaum zum Wort "256,17 €".
Aufgabe 2:
Erstellen Sie die Grammatik einer Sprache die alle möglichen Datumsangaben der Form "10.04.2022" umfasst.
Sie können vereinfachend davon ausgehen, dass jeder Monat maximal 31 Tage haben kann. Insbesondere müssen Sie sich nicht mit der Schaltjahr-Thematik befassen.
