Lade...
 

Backus und Nauer Notation

Die von Backus und Nauer entwickelte Notation beschreibt die Syntax einfacher "Sprachen", wobei unter Sprache auch eine korrekt geschriebene reelle Zahl, ein gültiger Dateiname und ähnliche Dinge zu verstehen sind.

Die Backus-Naur-Notation besteht aus Produktionsregeln.

Regeln für komplexe Konstrukte stützen sich auf Regeln für einfachere Elemente der zu beschreibenden Sprache. Die Regeln sind oft rekursiv.
Auf der linken Seite steht eine Metavariable.
Rechts vom ::=-Zeichen wird erklärt, wie dasjenige erzeugt werden kann, das mit der Variablen auf der linken Seite bezeichnet ist. Dabei wird entweder auf einfachere Regeln verwiesen, oder es erscheinen Zeichen(folgen), die genau so - wörtlich - im generierten Text auftauchen: Terminalsymbole. Terminalsymbole werden in dieser Dokumentation rot gekennzeichnet.
Alternativen werden durch das Zeichen '|' getrennt; d.h.

a | b | c


bedeutet a oder b oder c, aber nicht ab oder abc.

 
Die Beschreibung für etwas, das auch weggelassen werden kann, wird in in eckige Klammern gesetzt:

a [ b ] [ c ]


beschreibt sowohl a also auch ab, ac und abc, aber nicht acb und schon gar nicht b, bc oder c.

 
Beispiel

realNumber ::= integer [ decSeparator integer ] integer ::= digit | integer digit digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 decSeparator ::= . | ,


beschreibt reelle Zahlen wie

    2.1828459
    4,57
    0,5
   100

Die Ziffern 0 ... 9,  Punkt und Komma sind Terminalsymbole. Metavariablen sind: realNumer, integer, decSeparator und digit. Jede Metavariable muss mindestens einmal auf der linken Seite einer Regel vorkommen.