EBNF-Regeln



  • Hallo Community,

    zur Zeit behandeln wir die EBNF-Regeln und dazu hat uns der Professor ein paar Übungen gegeben, wobei auch leider ohne Lösungen. Deswegen würde ich mich freuen, wenn ihr mir ein wenig unter die Arme greifen würdet.

    Das Alphabet der Sprache, die Sie beschreiben sollen, besteht nur aus den (Terminal-)Symbolen a und b. Die Sprache ist durch folgende, umgangssprachliche
    Regeln definiert:
    1. Ein Wort hat mindestens einen Buchstaben.
    2. Der erste und der zweite Buchstabe ist entweder a oder b.
    3. Hat das Wort mehr als zwei Buchstaben, so steht entweder an der 3. bis 5. Stelle ein a oder an der 3. und 4. Stelle ein b.
    4. Nach dem mit Regel 3. beschriebenen Wortteil folgen mindestens zwei beliebige weitere Buchstaben.
    5. Die Länge der Worte der Sprache ist nicht begrenzt.

    Mein Ansatz sieht so aus:

    Buchstabe => "a" | "b"
    Wort => ("a", {"a", {("aaa" | "bb"), 2*Buchstabe}}) | ("b", {"b", {("aaa" | "bb"), 2*Buchstabe}})
    

    Da beide Teile einen gleichen Abschnitt haben, habe ich es dann noch versucht etwas zu kürzen:

    Buchstabe => "a" | "b"
    MehrAlsZweiBuchstabenRegel => ("aaa" | "bb"), 2*Buchstabe
    Wort => ("a", {"a", {MehralsZweiBuchstabenRegel}}) | ("b", {"b", {MehrAlsZweiBuchstabenRegel}})
    

    Mein Ansatz fühlt sich aber falsch an, vorallem fehlt auch Punkt 5 der Aufgabe, da ich nicht wirklich weiß, wo ich dieses Kriterium noch hinstecken soll.

    Es wäre schön wenn sich jemand dazu äußern würde.
    Mit freundlichen Grüßen
    freaky

    Edit:
    {} statt []


  • Mod

    Ich finde die Wikipedia-Seite dazu ganz hilfreich. ( https://de.wikipedia.org/wiki/Erweiterte_Backus-Naur-Form )
    Brauchst du für die Aufgaben wirklich Lösungen?

    Hast du keine Lust, ein wenig mit den Möglichkeiten herumzuexperimentieren?



  • Danke nachtfeuer. Durch deinen Beitrag sind all meine Probleme verschwunden.



  • Mein Ansatz fühlt sich aber falsch an, vorallem fehlt auch Punkt 5 der Aufgabe, da ich nicht wirklich weiß, wo ich dieses Kriterium noch hinstecken soll.

    du brauchst irgendeine Form der Rekursion.
    Ich hab mir deine Aufgabe jetzt nicht im Detail angeschaut, aber du brauchst irgendwas der Form Wort => ... Wort ....


Anmelden zum Antworten