Zum Forum
Passwort vergessen?
Noch keinen Account?
lexikon
Hauptseite
Zufälliger Artikel
Diskussion
Diskussion : Erweiterte Backus-Naur-Form
Links
Forum
Portale
Reisen
Versicherung
Inhaltsverzeichnis
Hauptmenü
Home
Editorial
Bildung
E-Learning
Fremdsprachen
Magazin
Wissen
Wörterbücher
Enzyklopädien
Expertendienste
Wissenswertes
Praktische Ratgeber
--------------------------
Biologie
Chemie
Computer
Film/ Theater
Geografie
Geschichte
Jura
Kunst
Literatur
Mathematik
Medizin
Musik
Philosophie
Physik/ Astronomie
Politik
Psychologie
Religionen
Sport
Umwelt
Wirtschaft
Reisen
Lexikon
Versicherung
Suchen
Schnellsuche
Suchmaschinen
Metasuchmaschinen
Webkataloge
News
Treffpunkt
Chat
Forum
Suche
Schnellsuche
Sitemap
Kontakt
Impressum
Erweiterte Backus-Naur-Form
Stichpunkte
Allgemein
die ursprünglich von Niklaus Wirth zur Darstellung der Syntax der Programmiersprache Pascal eingeführt wurde
kurz EBNF
ist eine Erweiterung der Backus-Naur-Form (BNF)
Die Erweiterte Backus-Naur-Form
die benutzt wird
um kontextfreie Grammatiken darzustellen. Die EBNF ist von der ISO standardisiert unter der Nummer ISO/IEC 14977:1996(E).Gelegentlich werden auch andere erweiterte Varianten der BNF nicht ganz korrekt ebenfalls als EBNF bezeichnet. Inhaltsverzeichnis showTocToggle("Anzeigen"
"Verbergen") 1 Grundlagen 2 Motivation zur Erweiterung der BNF 2.1 Zahldefinition in BNF 2.2 Zahldefinition in EBNF 3 Andere Ergänzungen und Modifikationen 4 Beispiel 5 Weiterführende Informationen 6 Weblinks [Bearbeiten]
Sie ist eine formale Metasyntax (Metasprache)
Grundlagen
Satzzeichen
etc
das heißt
etwa ein Computerprogramm
Leerzeichen
Ein Text
besteht zunächst aus Terminalsymbolen
Ziffern
aus sichtbaren Zeichen - Buchstaben
etwa ZifferausserNull = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; Ziffer = "0" | Zifferaussernull ; In dieser Produktionsregel wird das Nichtterminalsymbol Ziffer definiert
das stets auf der linken Seite steht
Die EBNF definiert Produktionsregeln
in denen Symbolfolgen jeweils einem Nichtterminalsymbol zugeordnet werden
Der vertikale Strich stellt eine Alternative dar
die Terminalsymbole werden in Anführungszeichen eingeschlossen und mit einem Semikolon als Endezeichen abgeschlossen
die wiederum 1 oder 2 oder 3 usw. bis 9 sein kann
Eine Ziffer ist also eine 0 oder eine ZifferausserNull
...
die ausgelassen oder wiederholt werden dürfen
10
12345
können mit geschweiften Klammern dargestellt { ... } werden: NatuerlicheZahl = ZifferausserNull { Ziffer } ; Hier passen die Texte 1
...
2
...
Eine Produktionsregel kann auch eine Folge von Terminal- oder Nichtterminalsymbolen enthalten
etwa: Zwoelf = "1" "2" ; Zweihundertundeins = "2" "0" "1" ; Dreihundertzwölf = "3" Zwoelf ; ZwoelfTausendzweihunderteins = Zwoelf Zweihundertundeins ; Ausdrücke
Zu beachten ist
beliebig oft
jedoch auch keinmal vorkommen darf
dass alles
was innerhalb der geschweiften Klammern steht
der optional ein Minuszeichen vorangestellt werden kann
Eine Option kann durch eckige Klammen [ ... ] dargestellt werden: GanzeZahl = "0" | [ "-" ] NatuerlicheZahl ; Eine ganze Zahl ist also die Null (0) oder eine natürliche Zahl
Hier passen also alle ganzen Zahlen wie 0
1234 etc. [Bearbeiten]
-3
Motivation zur Erweiterung der BNF
um optionale Elemente
die ausgelassen werden dürfen
Die BNF benötigt teilweise umständliche Konstrukte
sowie sich wiederholende Elemente darzustellen
also Elemente
In der Spezifikation von PL/1 wurden bereits eckige Klammern "[...]" für Optionen verwendet
Niklaus Wirth hat in der Definition der Sprache Pascal zusätzlich geschweifte Klammern "{...}" für Wiederholungen in die BNF eingeführt und nannte dies extended BNF (erweiterte BNF). Alle Formulierungen in einer EBNF-Syntax lassen sich auch in BNF ausdrücken
Die EBNF wurde von Wirth aus Gründen der besseren Lesbarkeit und kompakteren Schreibweise geschaffen. [Bearbeiten]
Zahldefinition in BNF
Eine Zahl ist eine Ziffernfolge mit optionalem Minuszeichen als Vorzeichen
In BNF muss man mehrere Alternativen und eine Rekursion für die Ziffernwiederholung verwenden: BNF <Optionale Ziffernfolge> ::= <Ziffer> <Optionale Ziffernfolge> | <Positive Zahl> ::= <Ziffer ausser Null><Optionale Ziffernfolge> <Zahl> ::= <Positive Zahl> | - <Positive Zahl> | 0 Lies: Eine Zahl ist entweder eine positive Zahl oder ein Minuszeichen gefolgt von einer positiven Zahl oder das Zeichen Null
Eine positive Zahl ist eine Ziffer ausser Null gefolgt von einer optionalen Ziffernfolge
Eine optionale Ziffernfolge ist eine Ziffer gefolgt von einer optionalen Ziffernfolge oder leer. [Bearbeiten]
Zahldefinition in EBNF
gefolgt von einer ZifferausserNull
In EBNF kann man dies in einer einzigen Regel ohne Rekursion darstellen: EBNF Zahl = [ '-' ] ZifferausserNull { Ziffer } | '0' ; Lies: Eine Zahl ist ein optionales Minuszeichen
gefolgt von keiner oder beliebig vielen weiteren Ziffern oder das Zeichen Null
Das Minuszeichen kann weggelassen werden
Die Wiederholung kann auch keinmal auftreten (optionale Wiederholung)
inklusive einer Rekursion (<Optionale Ziffernfolge> enthält sich selbst in der eigenen Definition). Die EBNF kennzeichnet Terminalsymbole durch Anführungszeichen und verwendet ein Endezeichen
Die EBNF benötigt hier nur eine einzige Regel ohne Alternative
während die BNF zwei Regeln mit vier Alternativen benötigt
Nichtterminalsymbole werden nicht in spitze Klammern eingeschlossen
Durch die Anführungszeichen sind Verwechslungen ausgeschlossen. [Bearbeiten]
Andere Ergänzungen und Modifikationen
Die EBNF beseitigt einige Schwachstellen der BNF: Die BNF verwendet selbst die Symbole (<
>
|
::=)
kann die BNF nicht ohne Modifikation oder Erklärung verwendet werden. Eine BNF-Syntax kann eigentlich nur einzeilige Regeln enthalten. Die EBNF löst diese Probleme: Terminalsymbole werden grundsätzlich in Anführungszeichen geschrieben ("..." oder '...')
Wenn diese in der definierten Sprache auftauchen
Auf die spitzen Klammern ("<...>") bei Nichtterminalsymbolen kann dann verzichtet werden
Ein Endezeichen
Herausnehmen von Alternativen (zum Beispiel alle Zeichen ohne Anführungszeichen)
Definition der Wiederholungszahl
normalerweise das Semikolon
Kommentare usw. vorgesehen
kennzeichnet das Ende jeder Regel. Darüberhinaus sind Erweiterungsmechanismen
die sie definieren kann
Trotz aller Erweiterungen ist die EBNF nicht "mächtiger" als die BNF in Hinsicht der Sprachen
allerdings mit vermutlich wesentlich höherem Aufwand
Prinzipiell ließe sich jede in EBNF definierte Grammatik auch nach BNF übertragen
Die EBNF ist von der ISO standardisiert unter der Nummer ISO/IEC 14977:1996(E)
Unter Umständen wird auch jede erweiterte BNF als EBNF bezeichnet
So nutzt das W3C eine EBNF (http://www.w3c.org/TR/REC-xml#sec-notation) zur Spezikation von XML. [Bearbeiten]
Beispiel
die nur Zuweisungen erlaubt
Eine ganz einfache Programmiersprache
kann in EBNF so definiert werden: (* ein einfaches Beispiel in EBNF - Wikipedia *) Programm = 'PROGRAM' Bezeichner 'BEGIN' { Zuweisung [";"] } 'END' "." ; Bezeichner = Buchstabe { ( Buchstabe | Ziffer ) } ; Zahl = [ "-" ] Ziffer { Ziffer } ; String = '"' { AlleZeichen - '"'} '"' ; Zuweisung = Bezeichner ":=" ( Zahl | Bezeichner | String ) ; Buchstabe = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z" ; Ziffer = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ; AlleZeichen = ? alle sichtbaren Zeichen ? ; Hier wurden die Standardsymbole ("=" für Definitionen
";" als Endezeichen usw.) verwendet
Bei Bedarf darf davon abgewichen werden
Welt!" END. Die Sprache kann leicht um Kontrollstrukturen
Ein syntaktisch zulässiges Programm wäre dann PROGRAM DEMO1 BEGIN A0:=3; B:=45; H:=-100023; C:=A; D123:=B34A; ESEL:=GIRAFFE; TEXTZEILE:="Hallo
arithmetische Ausdrücke und Ein- beziehungsweise Ausgabeanweisungen ergänzt werden
Dann entstünde bereits eine brauchbare
kleine Programmiersprache
1
Die folgenden Zeichen
wurden hier verwendet: Verwendung Zeichen Definition = Endezeichen ; Logisches Oder | Option [ ... ] Optionale Wiederholung { ... } Gruppierung ( ... ) Anführungszeichen
die im Standard als normale Darstellung empfohlen werden
Variante " ... " Anführungszeichen
2
Variante ' ... ' Kommentar (* ... *) Spezielle Sequenz ? ... ? Ausnahme - [Bearbeiten]
Weiterführende Informationen
um bspw. den Aufbau von Programmiersprachen darzustellen Beschreibung einer sehr einfachen Programmiersprache PL/0 in EBNF [Bearbeiten]
Siehe auch ... BNF Backus-Naur-Form Programmiersprachen Die EBNF wird genutzt
Weblinks
ISO/IEC 14977 : 1996(E) - ISO Standard zu EBNF (final draft version SC22/N2249) (http://www.cl.cam.ac.uk/~mgk25/iso-14977.pdf) (Dieses Dokument ist ein Entwurf
in den Beispielen hingegen (bis auf einige Kommentare) werden diese Meta-Inditifiers mit Leerzeichen geschrieben.) Varianten der BNF und EBNF im Überblick (http://www.cs.man.ac.uk/~pjj/bnf/ebnf.html) en:Extended Backus-Naur form
Es enthält noch Fehler! So werden „Meta-Identifiers“ im Text mit Bindestrichen durchgekoppelt (siehe Abschnitt 4: „written as one or more words joined together by hyphens“)
Dieser Artikel basiert auf dem Artikel
Erweiterte Backus-Naur-Form
aus der freien Enzyklopädie
wikipedia
und steht unter der
GNU Lizenz für freie Dokumentation
. In der wikipedia ist eine
Liste der Autoren
verfügbar.
Frauenstimmrecht (Schweiz)
Rhineland p ger.png
Landkreis Germersheim
Leptocephalus
Rhineland p kl.png
Landkreis Kaiserslautern
[ Zurück ]
Inhalt Lexikon:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1
2
3
4
5
6
7
8
9
Chat
|
Lexikon
|
Reisen
|
Versicherung
|
Forum
|
Kontakt