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.
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?)
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
() = 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?
„(“ 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“}
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:
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.)
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?