EBNF
Aus KGS-Wiki
Die Erweiterte Backus-Naur-Form ist eine Möglichkeit, um formale Grammatiken verkürzt aufzuschreiben. Die wesentlichen neuen Syntax-Elemente sind:
- Runde Klammern
( ... )funktionieren wie in der Mathematik. - Eckige Klammern
[ ... ]markieren einen optionalen Teilhttp[s]heißt:httpoderhttps - Geschweifte Klammern
{ ... }markieren einen Teil, der beliebig oft wiederholt werden darf.h{t}psheißt:hps,htpsoder auchhtttttttttttttttttps
Beispiele
Telefonnummern
Die folgende Grammatik definiert Telefonnummern in EBNF:
<Telefonnummer> ::= 0 <ZifferAusserNull> {<Ziffer>} / <ZifferAusserNull> {<Ziffer>}
<Ziffer> ::= 0 | <ZifferAusserNull>
<ZifferAusserNull> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
lies:
- Eine Telefonnummer besteht aus einer
0, gefolgt von einer Ziffer außer 0, beliebig vielen Ziffern ({<Ziffer>}), einem/, wieder einer Ziffer außer 0 und zuletzt noch einmal beliebig vielen Ziffern - Eine Ziffer ist entweder 0 oder eine Ziffer außer 0
- Eine Ziffer außer 0 ist entweder 1, 2, 3, 4, 5, 6, 7, 8 oder 9
Römische Zahlen
Die Grammatik für römische Zahlen aus dem Artikel Formale Grammatik kann in EBNF verkürzt werden zu:
<RoemischeZahl> ::= {M} (CD|CM|[D][C][C][C]) (XL|XC|[L][X][X][X]) (IV|IX|[V][I][I][I])
| Element | Erläuterung |
|---|---|
{M}
|
beliebig viele M
|
(CD|CM|...)
|
CD, CM oder ...
|
... [D][C][C][C]
|
... C, CC, CCC, D, DC, DCC, DCCC oder nichts.
|
(XL|XC|...)
|
XL, XC oder ...
|
... [L][X][X][X]
|
... X, XX, XXX, L, LX, LXX, LXXX oder nichts
|
(CD|CM|...)
|
IV, IM oder ...
|
... [D][C][C][C]
|
... I, II, III, V, VI, VII, VIII oder nichts.
|
