EBNF Brüche

Starveation

Mitglied
Hallo erstmal,

ich Rätsel schon länger an einer Aufgabe, da ich nicht genau weiß wie sowas überhaupt im Gesamtbild aussehen mag und die Masse der Bedingungen mich erschlägt. Es wäre nett wenn jemand Beispiele zeigen könnte und was man evtl beachten sollte.
(Oder es zumindest so formuliert, sodass man einen besseren Überblick hat)
Dickes Danke im Voraus :D

PS: Ich habe natürlich vorher versucht zu googeln ^^

Definieren Sie (schriftlich!) eine Grammatik in EBNF-Syntax um Rechenoperationen mit den Grund- rechenarten auf Brüchen darstellen zu können. Berücksichtigen Sie dabei folgendes: Es können be- liebig viele Brüche durch Operatoren miteinander verknüpft werden. Eine jede solche Operation und jeder Bruch wiederum kann beliebig tief mit Klammern geschachtelt werden. Ein Bruch besteht im- mer aus Zähler, Bruchstrich und Nenner und darf keinen Nullteiler haben, der Zähler darf aber sehr wohl Null sein. Als Operatoren sind +, -, * und / erlaubt. Brüche, Klammern und Operatoren soll- ten immer durch ein Leerzeichen voneinander getrennt sein. Richten Sie sich auch nach folgenden Beispielwörtern der Grammatik:
4/3 * 1/2 + -2/2 * ( 3/1 + -3/2 ) ( -1/2 ) + 3/4 * 2/1
 
Zuletzt bearbeitet:

LimDul

Top Contributor
Gott ist das lang her - Formalismen kann ich dir nicht liefern, aber Ansätze. (Keine Ahnung mehr, wie man Wiederholungen etc. in EBNF schreibt)

Ich sehe zwei Variante:
a) Von außen nach innen. Also man definiert zuerst das äußerte Element: Das ist eine beliebige Anzahl von "Elementen" durch "Operatoren" miteinander verknüpft: Grammtik = ELEMENT (LEERZEICHEN OPERATOR LEERZEICHEN ELEMENT)+
Dann geht man weiter hin und definiert die einzelnen Elemente aus etc.
b) Von innen nach außen - das finde ich die einfacherere Variante. Man fängt mit den kleinsten Elemente an:
ZÄHLER= 0 | [1-9][0-9]+
NENNER = [1-9][0-9]+
TRENNZEICHEN = /
BRUCH= ZÄHLER TRENNZEICHEN NENNER
usw.
 

Starveation

Mitglied
b) Von innen nach außen - das finde ich die einfacherere Variante. Man fängt mit den kleinsten Elemente an:
ZÄHLER= 0 | [1-9][0-9]+
NENNER = [1-9][0-9]+
TRENNZEICHEN = /
BRUCH= ZÄHLER TRENNZEICHEN NENNER
usw.

Wenn ich das richtig verstehe würde man erstmal alle Dinge die man nutzt erstmal definieren bevor man überhaupt mit der Zusammensetzung anfängt?
 

MoxxiManagarm

Top Contributor
Wenn ich das richtig verstehe würde man erstmal alle Dinge die man nutzt erstmal definieren bevor man überhaupt mit der Zusammensetzung anfängt?
Kann man, muss man aber nicht unbedingt. Im Fall von Trennzeichen würde ich es persönlich nicht vorher definieren. Komplexere Strukturen würde ich vorher definieren. Dem Bruch fehlt oben aber noch was, nämlich das optionale Minus
 

LimDul

Top Contributor
Kann man, muss man aber nicht unbedingt. Im Fall von Trennzeichen würde ich es persönlich nicht vorher definieren. Komplexere Strukturen würde ich vorher definieren. Dem Bruch fehlt oben aber noch was, nämlich das optionale Minus
Danke. Deswegen auch mein Hinweis - das ich sowas gemacht habe ist >10 Jahre her. Deswegen kenne ich die Formalismen, was man wie aufscheibt nicht. Und ja, das Minus hab ich vergessen :)
 

MoxxiManagarm

Top Contributor
Ich glaube deine Syntax ist auch eher die von ABNF (Angereicherte BNF), nicht zu verwechseln mit EBNF (Erweiterte BNF) 🤪
EBNF kennt z.B. glaube ich keine Ranges. Von daher sollte man für die Ranges eventuell auch nochmal eine Definition davor machen.
 

Neue Themen


Oben