EBNF: Unterschied zwischen den Versionen
Aus KGS-Wiki
Sn (Diskussion | Beiträge) |
Sn (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
Die [[EBNF|Erweiterte Backus-Naur-Form]] ist eine Möglichkeit, um [[formale Grammatik]]en verkürzt aufzuschreiben. Die wesentlichen neuen Syntax-Elemente sind: | Die [[EBNF|Erweiterte Backus-Naur-Form (EBNF)]] ist eine Möglichkeit, um [[formale Grammatik]]en verkürzt aufzuschreiben. Die wesentlichen neuen Syntax-Elemente sind: | ||
* Runde Klammern <code>( ... )</code> funktionieren wie in der Mathematik und gruppieren Operanden und Operatoren. Beispiel: <code>Mo|ein</code> ist entweder <code>Mo</code> oder <code>ein</code>; <code>M(o|e)in</code> ist entweder <code>Moin</code> oder <code>Mein</code>. | * Runde Klammern <code>( ... )</code> funktionieren wie in der Mathematik und gruppieren Operanden und Operatoren. Beispiel: <code>Mo|ein</code> ist entweder <code>Mo</code> oder <code>ein</code>; <code>M(o|e)in</code> ist entweder <code>Moin</code> oder <code>Mein</code>. |
Aktuelle Version vom 17. September 2024, 13:40 Uhr
Die Erweiterte Backus-Naur-Form (EBNF) ist eine Möglichkeit, um formale Grammatiken verkürzt aufzuschreiben. Die wesentlichen neuen Syntax-Elemente sind:
- Runde Klammern
( ... )
funktionieren wie in der Mathematik und gruppieren Operanden und Operatoren. Beispiel:Mo|ein
ist entwederMo
oderein
;M(o|e)in
ist entwederMoin
oderMein
. - Eckige Klammern
[ ... ]
markieren einen optionalen Teil. Beispiel:http[s]
heißt:http
oderhttps
- Geschweifte Klammern
{ ... }
markieren einen Teil, der beliebig oft wiederholt werden darf. Beispiel:h{t}ps
heißt:hps
,htps
oder 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.
|