Informatik

EBNF einfach erklärt: Regeln lesen und entwerfen

EBNF einfach erklärt: Regeln lesen und entwerfen
EBNF einfach erklärt: Regeln lesen und entwerfen
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Die Erweiterte Backus-Naur-Form (EBNF) beschreibt mit kurzen Regeln, welche Zeichenfolgen zur Syntax einer formalen Sprache gehören. Du liest dazu Terminalsymbole, Nichtterminalsymbole und Verknüpfungen wie Alternative, Option und Wiederholung. Danach kannst du Wörter prüfen und einfache Grammatiken selbst entwerfen.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Woraus besteht eine EBNF-Regel?

Stell dir vor, du möchtest erlaubte Bezeichner oder Zahlen beschreiben, ohne jede mögliche Zeichenfolge aufzuzählen. Eine Grammatik fasst die Regeln dafür zusammen. Jede Regel definiert ein Nichtterminalsymbol wie Ziffer oder Konstante.

Definition

Terminalsymbol

Ein Terminalsymbol ist ein Zeichen oder eine feste Zeichenfolge, die im erzeugten Text tatsächlich vorkommt. In der hier verwendeten EBNF-Variante steht es in Anführungszeichen, zum Beispiel "7", "+" oder "BEGIN".

Definition

Nichtterminalsymbol

Ein Nichtterminalsymbol ist ein Name für eine durch Regeln beschriebene Struktur. Es steht ohne Anführungszeichen, zum Beispiel Ziffer. Beim Erzeugen eines Wortes wird es nach seiner Regel ersetzt.

Wir verwenden auf dieser Seite eine ISO-orientierte Schreibweise:

  • = trennt den Namen links von seiner Definition rechts.
  • , verbindet Bestandteile in ihrer Reihenfolge.
  • ; beendet eine Regel.
Beispiel

Die Regel Zwoelf = "1", "2" ; erzeugt genau den Text 12. Zwoelf ist das Nichtterminal. "1" und "2" sind Terminalsymbole und müssen in dieser Reihenfolge erscheinen.

Lückentext

Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.

Ein steht für Text, der tatsächlich erscheint. In Ziffer = "7" ; ist das Nichtterminal und das Terminal. Das Zeichen trennt den Namen von seiner Definition.

Lösungen: Lücke 1: Terminalsymbol; Lücke 2: Ziffer; Lücke 3: "7"; Lücke 4: =. Achte auf die Anführungszeichen: Zitierter Text erscheint im Ergebnis, ein unzitierter Name verweist auf eine Regel.
Wie verbindest du die Bausteine?

Vier Schreibweisen decken viele einfache Grammatiken ab.

  • Alternative: A | B bedeutet: Wähle A oder B.
  • Sequenz: A, B bedeutet: Erst kommt A, danach B.
  • Option: [ A ] bedeutet: A kommt einmal oder gar nicht vor.
  • Wiederholung: { A } bedeutet: A kommt beliebig oft vor, auch nullmal.
  • Gruppierung: ( A | B ) fasst eine Auswahl zu einem gemeinsamen Baustein zusammen.
Beispiel

Kuerzel = ( "A" | "B" ), [ "-" ], Ziffer ; beschreibt ein Kürzel aus A oder B, danach einem optionalen Bindestrich und zuletzt einer Ziffer. Zulässig sind zum Beispiel A7 und B-3. Nicht zulässig sind C7, A- und -B3.

Merke

Lies eine EBNF-Regel von innen nach außen und dann in Reihenfolge: zuerst Klammern und Alternativen klären, danach die Bestandteile der Sequenz zusammensetzen.

Teste dich
Frage 1 von 2LeichtWas bedeutet { Ziffer }?
Lösung: Ziffer darf nullmal, einmal oder mehrfach vorkommen. — Geschweifte Klammern stehen für eine Wiederholung einschließlich null Wiederholungen.
Frage 2 von 2MittelWelche Zeichenfolge passt zu Kuerzel = ( "A" | "B" ), [ "-" ], Ziffer ;?
Lösung: B-4B-4 erfüllt alle drei Schritte: erlaubter Anfang, ein optionaler Bindestrich und genau eine Ziffer.
Wie prüfst du eine Zeichenfolge?

Beim Wortproblem prüfst du, ob eine konkrete Zeichenfolge nach den Regeln erzeugt werden kann. Gehe dabei nachvollziehbar vor:

  1. Beginne mit dem Nichtterminal, das die gesamte Sprache beschreibt. Es heißt Startsymbol.
  2. Wähle bei jeder Alternative einen passenden Zweig.
  3. Entscheide bei Optionen, ob der Baustein vorkommt.
  4. Bestimme bei Wiederholungen, wie oft der Baustein gebraucht wird.
  5. Ersetze weitere Nichtterminale, bis nur noch Terminalsymbole übrig sind.
  6. Vergleiche Reihenfolge und Zeichen mit dem zu prüfenden Wort.

Für das folgende Beispiel ist Konstante das Startsymbol:

  • Konstante = [ Vorzeichen ], Ziffer, { Ziffer } ;
  • Vorzeichen = "+" | "-" ;
  • Ziffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
Beispiel

Prüfe -204.

  1. Für [ Vorzeichen ] wird die vorhandene Option gewählt.
  2. Vorzeichen wird durch "-" ersetzt.
  3. Die verpflichtende erste Ziffer wird durch "2" ersetzt.
  4. { Ziffer } wird zweimal genutzt und liefert "0" sowie "4".
  5. Übrig bleiben die Terminalsymbole -, 2, 0, 4 in genau dieser Reihenfolge.

Damit gehört -204 zur beschriebenen Sprache.

Teste dich
Frage 1 von 2MittelWelches Wort kann die Grammatik für Konstante nicht erzeugen?
Lösung: --2 — Es ist höchstens ein Vorzeichen erlaubt. Nach dem optionalen Vorzeichen müssen eine erste Ziffer und anschließend nur weitere Ziffern folgen.
Frage 2 von 2SchwerJemand behauptet, das leere Wort gehöre zur Sprache, weil { Ziffer } auch nullmal vorkommen darf. Was ist die richtige Diagnose?
Lösung: Falsch: Die einzelne Ziffer vor der Wiederholung ist verpflichtend. — Die Wiederholung kann leer sein. Trotzdem fordert Konstante außerhalb der Klammern genau eine erste Ziffer.
Wie entwirfst und testest du eine Grammatik?

Übersetze die Beschreibung schrittweise. Gesucht seien Codes, die mit A oder B beginnen und danach mindestens eine Ziffer enthalten.

  1. Zerlege das Format in Anfang und Ziffernfolge.
  2. Formuliere den Anfang als Alternative.
  3. Erzwinge eine erste Ziffer.
  4. Erlaube danach weitere Ziffern als Wiederholung.
Beispiel

Eine passende Grammatik lautet:

  • Code = ( "A" | "B" ), Ziffer, { Ziffer } ;
  • Ziffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;

Teste nicht nur typische Fälle:

  • A7 ist zulässig: erlaubter Anfang und eine Ziffer.
  • B204 ist zulässig: erlaubter Anfang, erste Ziffer und zwei Wiederholungen.
  • A ist unzulässig: Die verpflichtende erste Ziffer fehlt.
  • C3 ist unzulässig: C gehört nicht zur Anfangsalternative.
Merke

Ein guter Grenzfall liegt direkt an einer Regelgrenze: keine Wiederholung, genau eine Wiederholung, fehlender Pflichtteil oder ein Zeichen knapp außerhalb der erlaubten Auswahl.

Teste dich
Frage 1 von 1SchwerDu sollst Codes aus X, optional einem Bindestrich und mindestens einer Ziffer beschreiben. Welche Regel passt?
Lösung: Code = "X", [ "-" ], Ziffer, { Ziffer } ;"X" und die erste Ziffer sind verpflichtend. Der Bindestrich ist optional; weitere Ziffern dürfen beliebig oft folgen.
Was beschreibt EBNF – und was nicht?

EBNF beschreibt die Syntax, also die Form zulässiger Zeichenfolgen. Sie kann zum Beispiel festlegen, wie ein Bezeichner aufgebaut ist oder in welcher Reihenfolge Teile eines Programms stehen.

EBNF legt nicht automatisch die Semantik, also die Bedeutung, fest. Eine Zeichenfolge kann syntaktisch korrekt sein und trotzdem in einem bestimmten Sachzusammenhang keinen sinnvollen oder erlaubten Wert darstellen.

Außerdem gibt es mehrere EBNF-Varianten. Manche verwenden ::= statt =, einen Punkt statt eines Semikolons oder eine andere Schreibweise für Sequenzen. Deshalb musst du vor dem Arbeiten klären, welche Konvention gilt. Innerhalb einer Grammatik verwendest du sie konsequent.

Gut zu wissen

EBNF ist kompakter als BNF, weil Option und Wiederholung eigene Kurzformen besitzen. Dadurch beschreibt EBNF nicht grundsätzlich mehr Sprachen: Die Kurzformen lassen sich auch mit Alternativen, Rekursion und einem leeren Fall ausdrücken.

Teste dich
Frage 1 von 2LeichtWelche Aussage trifft zu?
Lösung: EBNF beschreibt, welche Zeichenfolgen syntaktisch zulässig sind. — EBNF ist eine Metasyntax für Grammatiken. Konkrete Notationsvarianten können sich unterscheiden.
Frage 2 von 2MittelZwei Quellen verwenden einmal = und einmal ::= zwischen linker und rechter Regelseite. Was solltest du tun?
Lösung: Die vereinbarte Variante erkennen und innerhalb einer Grammatik konsequent benutzen. — Entscheidend ist die festgelegte Konvention. Die Bedeutung des Definitionsschritts kann trotz anderer Zeichen gleich sein.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • EBNF
    • Bausteine
      • Terminalsymbole
      • Nichtterminalsymbole
    • Verknüpfungen
      • Alternative und Sequenz
      • Option und Wiederholung
      • Gruppierung
    • Arbeiten mit Regeln
      • Wörter schrittweise prüfen
      • Grammatiken entwerfen
      • Grenzfälle testen
    • Geltungsbereich
      • Syntax statt Semantik
      • Notationsvarianten beachten
Abschluss-Check
Teste dich
Frage 1 von 3LeichtWelche Schreibweise macht "-" optional?
Lösung: [ "-" ] — Eckige Klammern erlauben genau null oder ein Vorkommen.
Frage 2 von 3MittelGegeben ist Name = Buchstabe, { Buchstabe | Ziffer } ;. Warum ist A7B zulässig?
Lösung: Es beginnt mit einem Buchstaben; danach sind Buchstaben und Ziffern beliebig oft erlaubt. — Prüfe die Sequenz: zuerst genau ein Buchstabe, danach null oder mehr Zeichen aus der angegebenen Alternative.
Frage 3 von 3SchwerEine Grammatik soll genau ac und abc erzeugen. Welche Regel passt?
Lösung: T = "a", [ "b" ], "c" ; — Nur b darf wahlweise einmal vorkommen oder fehlen; a und c bleiben verpflichtend.

Wenn du alle drei Aufgaben begründen kannst, kannst du EBNF-Regeln nicht nur ablesen, sondern auch auf neue Zeichenformate übertragen.

Passend dazu