EBNF: Unterschied zwischen den Versionen

Aus KGS-Wiki
Keine Bearbeitungszusammenfassung
(Grammatik für römische Zahlen ergänzt)
Zeile 10: Zeile 10:
<ZifferAusserNull> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<ZifferAusserNull> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<Ziffer> ::= 0 | <ZifferAusserNull>
<Ziffer> ::= 0 | <ZifferAusserNull>
</syntaxhighlight>Die Grammatik für römische Zahlen aus dem Artikel [[Formale Grammatik]] kann in EBNF verkürzt werden zu:<syntaxhighlight lang="ebnf" line="1">
<RoemischeZahl> ::= {M} (CD|CM|[D][C][C][C]) (XL|XC|[L][X][X][X]) (IV|IX|[V][I][I][I])
</syntaxhighlight>
</syntaxhighlight>
[[Kategorie:Sprache]]
[[Kategorie:Sprache]]
[[Kategorie:Theoretische Informatik]]
[[Kategorie:Theoretische Informatik]]

Version vom 7. September 2023, 09:15 Uhr

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 Teil http[s] heißt: http oder https
  • Geschweifte Klammern { ... } markieren einen Teil, der beliebig oft wiederholt werden darf. h{t}ps heißt: hps, htps oder auch htttttttttttttttttps

Beispiel

Die folgende Grammatik definiert Telefonnummern in EBNF:

<Telefonnummer> ::= 0 <ZifferAusserNull> {<Ziffer>} / <ZifferAusserNull> {<Ziffer>}
<ZifferAusserNull> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<Ziffer> ::= 0 | <ZifferAusserNull>

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])