Katalog
concept#Software-Engineering#Architektur#Plattform

Extended Backus-Naur Form (EBNF)

EBNF ist eine formale Metasprache zur kompakten Beschreibung kontextfreier Grammatiken. Sie erweitert BNF mit syntaktischem Zucker für Optionen, Wiederholungen und Gruppierungen.

Die Extended Backus-Naur Form (EBNF) ist eine formale Metasprache zur kompakteren und lesbareren Beschreibung von kontextfreien Grammatiken.
Etabliert
Mittel

Klassifikation

  • Mittel
  • Technisch
  • Architektur
  • Fortgeschritten

Technischer Kontext

Build-Systeme (z. B. Maven, Gradle)Parser-Generatoren (z. B. ANTLR)Test-Frameworks zur Syntaxprüfung

Prinzipien & Ziele

Klarheit vor Kürze: Lesbarkeit der Grammatik hat Vorrang.Explizite Ambiguitätsbehandlung: Konflikte sichtbar machen und dokumentieren.Werkzeugkompatibilität: Notation so wählen, dass gängige Parser-Tools unterstützt werden.
Umsetzung
Domäne, Team

Use Cases & Szenarien

Kompromisse

  • Implizite Ambiguitäten führen zu inkonsistenten Implementierungen.
  • Verwendung nicht standardisierter Erweiterungen erschwert Tool-Support.
  • Unzureichende Tests können fehlerhafte Parser zur Folge haben.
  • Kleine, modulare Regeln statt sehr langer Produktionen.
  • Explizite Beispiele zu jeder Regel bereitstellen.
  • Regelmäßige Validierung mit realen Beispielen durchführen.

I/O & Ressourcen

  • Anforderungskatalog zur Syntax
  • Bisherige informelle Dokumentation oder Beispiele
  • Auswahl eines Ziel-Parsers oder Generators
  • Formale EBNF-Grammatikdateien
  • Generierter Parser-Code
  • Testsuite zur Syntaxvalidierung

Beschreibung

Die Extended Backus-Naur Form (EBNF) ist eine formale Metasprache zur kompakteren und lesbareren Beschreibung von kontextfreien Grammatiken. Sie erweitert die klassische BNF um syntaktische Zucker wie Optionen und Wiederholungen. EBNF dient als Grundlage für Sprachspezifikationen, Parser-Generatoren und Dokumentation von Programmiersprachen.

  • Kompakte, formale Beschreibung von Syntax reduziert Missverständnisse.
  • Direkte Grundlage für automatisierte Parser-Generierung.
  • Verbessert Dokumentation und Kommunikation zwischen Teams.

  • Für kontextsensitive Sprachen nicht ausreichend präzise.
  • Unterschiedliche EBNF-Dialekte können Portabilität einschränken.
  • Große oder verschachtelte Grammatiken werden schwer lesbar.

  • Regelanzahl

    Anzahl der Produktionsregeln in der EBNF-Grammatik zur Abschätzung von Komplexität.

  • Ambiguitätsfälle

    Anzahl und Schwere der erkannten Ambiguitäten während der Validierung.

  • Testabdeckung für Syntax

    Prozentsatz der Grammatikregeln, die durch Tests abgedeckt sind.

Einfache Arithmetik-Grammatik

Eine kompakte EBNF-Definition für Zahlen, Additionen und Multiplikationen mit Präzedenzregeln.

Teilmenge einer Konfigurationssprache

Beschreibung der Syntax einer Konfigurationsdatei (Abschnitte, Schlüssel, Werte) in EBNF zur Validierung.

ECMAScript-ähnliche Notation

Abschnittsweise Darstellung von Sprachkonstrukten ähnlich der Notation in Sprachspezifikationen.

1

Kernsyntax identifizieren und in EBNF formulieren.

2

Grammatik mit einem Parser-Generator testen und Konflikte beheben.

3

Automatisierte Tests und Beispiele ergänzen.

4

Dokumentation und Styleguide für Grammatikpflege erstellen.

⚠️ Technische Schulden & Engpässe

  • Veraltete, nicht mehr angepasste EBNF-Dialekte in Legacy-Projekten.
  • Unzureichende Testabdeckung bei Syntaxänderungen.
  • Dokumentation stimmt nicht mit implementierter Grammatik überein.
AmbiguitätsanalyseParser-ToolingTestabdeckung
  • EBNF verwenden, um kontextsensitive Semantik vollständig zu beschreiben.
  • Nicht abgestimmte Dialekte zwischen Dokumentation und Implementierung.
  • Grammatik so komprimieren, dass sie für Leser unverständlich wird.
  • Verschiedene Tools interpretieren Wiederholungs- und Optionssyntax unterschiedlich.
  • Implizite Präzedenzregeln nicht klar dokumentieren.
  • Fehlende Testfälle für Randfälle der Grammatik.
Grundlagen der formalen Sprachen und AutomatenErfahrung mit Parser-GeneratorenFähigkeit zur Debugging von Grammatikkonflikten
Eindeutigkeit der SyntaxWerkzeugunterstützung und KompatibilitätWartbarkeit und Lesbarkeit der Grammatik
  • Unterschiedliche EBNF-Dialekte zwischen Tools
  • Limitationen kontextsensitiver Regeln
  • Abhängigkeit von Parser-Generator-Fähigkeiten