# EBNF Brüche



## Starveation (11. Mai 2020)

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 

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


----------



## LimDul (11. Mai 2020)

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 (11. Mai 2020)

LimDul hat gesagt.:


> 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 = /
> ...



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 (11. Mai 2020)

Starveation hat gesagt.:


> 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 (11. Mai 2020)

MoxxiManagarm hat gesagt.:


> 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 (11. Mai 2020)

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.


----------



## Starveation (11. Mai 2020)

MoxxiManagarm hat gesagt.:


> 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.



Darüber weiß ich leider zu wenig. Wir haben bisher nur EBNF thematisiert


----------



## MoxxiManagarm (11. Mai 2020)

Sorry ich meinte LimDul  Ich wollte ihn nur darauf aufmerksam machen, dass man das schnell verwechseln kann. Semantisch sind die BNFs aber alle gleich, nur syntaktisch nicht.


----------

