12. Exkurs: EBNF

EBNF (Extended Backus-Naur Form) ist Sprache zur Darstellung von kontextfreien Grammatiken. Jede EBNF-Klausel definiert eine Ersetzungsregel, die vorschreibt, wie ein Nichtterminalsymbol (ein Symbol, das nicht in Wörtern der erzeugten Sprache vorkommen darf) in andere Nichtterminalsymbole oder Terminalsymbole (Symbole aus dem Alphabet der erzeugten Sprache) umgesetzt wird. Eine Regel sieht so aus:

ganzeZahl ::= [vorzeichen ]ziffer { ziffer }

Eine ganze Zahl besteht danach aus einem optionalen Vorzeichen (die eckigen Klammern), einer Ziffer und null oder mehr weiteren Ziffern (die geschweiften Klammern). Die (kursiv geschriebenen) Nichtterminalsymbole vorzeichen und ziffer müssen noch erklärt werden. Das geht mit

ziffer ::= "0"  | "1"  | "2"  | "3"  | "4"  | 
  "5"  | "6"  | "7"  | "8"  | "9"  | 
vorzeichen ::= "+"  | "-"

In typewriter gedruckt sind Terminalsymbole , der vertikale Strich steht für “oder”.

Oft sieht man auch (schlampig, aber bequem):

ziffer ::= "0 " -"9"

Letztlich ist EBNF eine kompakte Darstellung der bei formalen Sprachen gewohnten Regelmengen. Die Regel für ganzeZahl z.B. ließe sich auch schreiben als:

<br>G →  Z
<br>G →  V Z

<br>Z →  N Z

<br>Z →  N,< br>

wo G die Ganze Zahl, Z eine Ziffernfolge, V ein Vorzeichen und N eine Ziffer ist.

Vorsicht: Es gibt so viele Varianten von BNF und EBNF wie es AutorInnen gibt, die etwas damit Ausdrücken. Häufige Varianten:

  • Variation von “::=”
  • Nichtterminale in spitzen Klammern
  • Terminale ohne Anführungszeichen


Markus Demleitner

Copyright Notice