Backus-Naur-Notation

Hallo,

wer kann mir bei der Interpretation und Umformulierung (in die erweiterte Backus-Naur-Notation (EBNF))des folgenden Ausdrucks helfen?

Der Ausdruck lautet:

floatbrüche (int a, float b)
{ergebnis float;
ergebnis:= a*b*0,01;
return ergebnis}
end

Was bedeutet dieser Ausdruck und wie sieht er in EBNF aus?
Danke für jede Rückmeldung!

Tschüß

Hallo,
ich verstehe die Aufgabenstellung nicht. Die EBNF dient zur Beschreibung (kontextfreier) Sprachen. Was soll mit dieser speziellen Funktion hier geschehen - inwieweit soll sie in EBNF überführt werden ?

Gruss
Enno

Ich glaube, es ist eine EBNF gefragt, die diesen Ausdruck „erkennt“.
Vielleicht sowas :
{a-z}’(’ { (‚int‘|‚float‘){a-z}{,} } ‚)‘ ‚{‘
{ {a-z} (‚int‘|‚float‘)’;’ }
{ {a-z} ‚:=‘ …}
‚return‘ {’ '} {a-z} ‚;‘ ‚}‘ ‚end‘

Oder so ungefähr. Die ‚‘ stehen für Literale und die {} für "beliebig
oft wiedeholen oder auch weglassen).

Gruß
Thorsten

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Vielleicht sowas :
[…]

Ich würde das ganze etwas allgemeiner aufbauen, ist wahrscheinlich auch gewünscht (hört sich irgendwie nach einer Uni-Aufgabe an).

Beispielsweise so:

function -> name ‚(‘ parameterlist ‚)‘ body
parameterlist -> ( declaration ( ‚,‘ declaration )* )?
body -> ‚{‘ statement* ‚}‘ ‚end‘
statement -> declaration | assignment | return
declaration -> datatype name
datatype -> ‚int‘ | ‚float‘
assignment -> name ‚:=‘ expression
return -> ‚return‘ name
expression -> …
name -> …

Expression kann man jetzt beliebig rekursiv definieren, kommt darauf an was alles gewünscht ist (Klammerung, Operatoren). Name ist einfach eine Zeichenfolge.

Grüße, Robert

Hallo,
ja, daß würde zumindest Sinn machen.

Gruss
Enno