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 } # Can also be 0 times
Equivalence
Two EBNF rulesets are equal if they describe the same language.
Rekursion
Rekursion ist mächtiger um manche Probleme zu lösen, zum Beispiel ist mit Rekursion trivial: <AnB> <- [A <AnB> B].
Es ist immer eine Stopp-Möglichkeit nötig, wenn eine Rekursion verwendet wird.
Precedence
Sequence binds weaker than anything else.
Exercices
Show ”…” is a Valid String
You can use a derivation table in order to show the choices made to derive something in an EBNF ruleset.

You have the choice between a table and a tree. The tree is waaay more useful I think.