Hilfe zu EBNF

Hallo,

vielleicht kann mir jmd helfen und einen Tipp geben, wie ich hiermit anfange. Habe schon überall im Internet geschaut aber keinen passenden Ansatz gefunden. Da ich vorher noch nie Informatik hatte, wäre ich für eure Hilfe dankbar

Gegeben sei der folgende Regelsatz:
A ::= „-“{„0“|„1“|„2“|„3“|„4“}
B ::= „(“ B „)“ | B „+“ B | C
C ::= C „*“ C | A

Welche Sätze werden durch die folgende EBNF von B
erzeugt?
Erweitern Sie diese EBNF derart, dass mathematische Ausdrücke mit den Operatoren +,-,* und / gebildet werden können.

Hallo,

es ist besser, wenn du eine konkrete Frage stellst, wo du nicht weiter kommst oder was du nicht verstehst. Deine Hausaufgaben wird dir keiner abnehmen.

Gegeben sei der folgende Regelsatz:

Kannst du mir erklären, wie du die Regeln zu lesen hast und wie du sie anwenden kannst? (Was bedeutet „::=“, was bedeuten runde, eckige, geschweifte Klammern, was Anführungszeichen?)

Gruß

Andreas

Ich habe auch nichts davon gesagt, dass jmd meine HA übernehmen soll. Nur uns wurde dies so übergeben ohne weitere Erklärungen und daher hätte ich ganz gerne mal einen Ansatz.

() = Gruppierung
[] = ein optionaler Inhalt, der Null oder einmal vorkommt
{} = beliebige Wiederholung des Inhalts: 0-mal, 1-mal, 2-mal
| = Alternative, die eine Seite oder die Andere
B ::= = für B gilt

ZB:
D ::= A (B | C) (E | F) d.h.
D ∈ {ABE, ABF, ACE, ACF} in Mengenschreibweise

Hi,

() = Gruppierung
[] = ein optionaler Inhalt, der Null oder einmal vorkommt
{} = beliebige Wiederholung des Inhalts: 0-mal, 1-mal, 2-mal
| = Alternative, die eine Seite oder die Andere

Genau.

B ::= = für B gilt

Ja, hier kann man es eher lesen als „B setzt sich zusammen aus“ oder „B kann ersetzt werden durch“.

D ::= A (B | C) (E | F) d.h.
D ∈ {ABE, ABF, ACE, ACF} in Mengenschreibweise

Richtig. Genau diesen Schritt sollst du in deiner Aufgabe ausgehend vom Nichtterminalsymbol B machen. Welche Wörter (oder Sätze; beide Namen kommen vor für die Zeichenfolgen, die von einer EBNF-Regelmenge erzeugt werden) kann man also ausgehend von B bilden?

Andreas

achso wir sollen 10 Stück bilden
eventuell:

„(“ B „)“
B „+“ B
C
C „*“ C
A
„-“{„0“|„1“|„2“|„3“|„4“}
(„1“|„2“|„3“|„4“){„0“|„1“|„2“|„3“|„4“}
„-“
„-“{„0“|„1“|„2“|„3“|„4“} {„0“|„1“|„2“|„3“|„4“}
(„1“|„2“|„3“|„4“){„0“|„1“|„2“|„3“|„4“} {„0“|„1“|„2“|„3“|„4“}

so in etwas oder liege ich ganz falsch?

Hallo,

achso wir sollen 10 Stück bilden
eventuell:

„(“ B „)“
B „+“ B
C

Das sind keine Wörter dieser formalen Sprache, weil noch Nichtterminalsymbole vorhanden sind, also solche, die noch ersetzt werden können/müssen, hier B und C. Bei einem Wort bist du erst angelangt, wenn du nur noch Terminalsymbole hast; das sind in EBNF die Symbole in Anführungszeichen.

Hier mal eine Beispielableitung. Das war die Regelmenge:

A ::= „-“{„0“|„1“|„2“|„3“|„4“}
B ::= „(“ B „)“ | B „+“ B | C
C ::= C „*“ C | A

Wir beginnen unsere Ableitung mit B und wenden dann die Ersetzungsregeln an (auf das jeweils fettgedruckte Symbol). Versuch mal nachzuvollziehen, welchen Regelteil ich jeweils angewendet habe:

B
B+ B
B+( B )
B
C
A+( C )
A+( C *C)
A+(A\ *C )
A +(A*A)
3013+( A *A)
3013+(-222\ *A )
3013+(-222*1)

Erst jetzt sind keine der Symbole A, B und C vorhanden und wir haben ein Wort der Sprache erzeugt: „3013+(-222*1)“

Wenn du zehn Beispiele für Wörter angeben sollst, musst du eine solche Ableitung noch neunmal durchführen (nicht unbedingt in dieser Ausführlichkeit, du kannst auch mehrere Schritte zusammenfassen, und irgendwann merkst du, wie der Hase läuft und was die einzelnen Symbole bedeuten. Das hilft dir dann bei der nächsten Teilaufgabe.)

Ich hoffe, es hilft dir weiter.

Andreas

leider verstehe ich noch nicht genau warum das so aussehen muss

leider verstehe ich noch nicht genau warum das so aussehen
muss

Der Kommentar ist wenig hilfreich (sowohl für dich als auch für mich): Was genau verstehst du nicht? Wo hakt es? Habe ich Begriffe verwendet, die du nicht kennst?

Andreas

ich sehe die Regelsätze, weiß aber nicht wie du von einem zum anderen kommst.

B
B+B
B+© wie kommst du auf B + C wo kommt das her das verstehe ich nicht und damit den rest leider auch nicht

aber schonmal n großes danke für deine bemühungen

ich sehe die Regelsätze, weiß aber nicht wie du von einem zum
anderen kommst.

B
B+B
B+© wie kommst du auf B + C wo kommt das her das verstehe
ich nicht

Ok, das ist doch mal was: Das ist die Regel, die ich zweimal angewandt habe:

B ::= „(“ B „)“ | B „+“ B | C

Die Regel besagt: Wenn du ein B findest, darfst du es ersetzen durch

  • Klammer auf, B, Klammer zu ODER

  • B, plus, B ODER

  • C

Man nennt diese Regeln deswegen auch Ersetzungsregeln.

Wenn wir mit B anfangen, dürfen wir dieses B also ersetzen durch B+B. (Das ist der erste Schritt von oben.) Jetzt können wir uns das zweite B anschauen: Das dürfen wir nach der Regel ersetzen durch (B), also kommt B+(B) heraus. Darin dürfen wir das zweite B wiederum durch C ersetzen. Damit haben wir B+© usw.

Andreas