EBNF

EBNF wird genutzt um eine Sprache (Menge aller Worte) zu definieren. Ein Wort ist eine valide Zeichenkette nach einer Menge an Regeln.

Es gibt immer eine Start Regel (letzte wenn nicht explizit) von der aus ersetzt wird.

Syntax

<left_hand_side> <= RHS

# Selection (exactly one is always chosen)
<lhs> <= E1 | E2 | E3

#  Option (doesn't have to be chosen)
<lhs> <= [ E1 ]

# Can be combined
<lhs> <= [ E1 | E2 ]
# Equivalent to
<lhs> <= E1 | E2 | \epsilon

# Repetition
<lhs> <= { E1 }

Rekursion

Es ist immer eine Stopp-Möglichkeit nötig, wenn eine Rekursion verwendet wird.