Diskussion:Backus-Naur-Form
Ein Satz in der Einleitung Artikels ist mißverständlich formuliert: "Hierzu zählt die Syntax gängiger höherer Programmiersprachen." In dieser Form ist die Aussage falsch. Die Syntax von Prog.sprachen kann in BNF definiert werden, sie ist aber selbt keine BNF. Ich schlage vor, diesen Satz in zu ändern in "Typische Anwendungen der BNF sind die Notation von Befehlssätzen, Kommunikationsprotokollen und die Syntax gängiger höherer Programmiersprachen." --Lars76 20:06, 23. Okt. 2007 (CEST)
Wenn ich mich recht erinnere, hat das auch etwas mit der Kontext-Normal-Form (CNF) und formalen Grammatiken zu tun. das sollte in die jeweligen Artikel eingearbeitet werden! --Coma 10:14, 10. Feb 2003 (CET)
Fehler im Beispiel?
[Quelltext bearbeiten]- so steht es momentan noch im artikel:
<Post-Anschrift> ::= <Personenteil> <Straße> <Stadt> <Personenteil> ::= [<Titel>] <Namensteil> <Vornamenteil> ::= Initial "." <Namensteil> ::= <Vornamenteil> <Namensteil> <Straße> ::= <Straßenname> <Hausnummer> <EOL> <Stadt> ::= <Postleitzahl> <Stadtname> <EOL>
- müsste es aber nicht wie folgt heissen?
<Post-Anschrift> ::= <Personenteil> <Straße> <Stadt> <Personenteil> ::= <Titel> <Personenteil> | <Namensteil> <Vornamenteil> ::= Initial "." <Namensteil> ::= <Vornamenteil> <Namensteil> | <Nachname> <Straße> ::= <Straßenname> <Hausnummer> <EOL> <Stadt> ::= <Postleitzahl> <Stadtname> <EOL>
- und <Vornamenteil> ::= Initial "." versteh ich überhauptnicht.
- ps: ich kenn mich zwar damit nicht wirklich aus, aber das angegebene sieht falsch aus.
- -- SK-Genius 18:13, 26. Jun 2004 (CEST)
- Das Beispiel entstammt, soweit ich sehe, ursprünglich dem Artikel in der englischen Wikipedia. Die eckigen Klammern sind in der Erklärung des Beispiels (keine reine BNF ...) erwähnt, also eigentlich kein Problem. Das Beispiel ist lediglich ein Fragment, es fehlen <Nachname>, <Postleitzahl> etc., also eigentlich etwas unglücklich. Initial sollte man auch in spitzen Klammern schreiben... ---Hubi 09:49, 5. Jul 2004 (CEST)
Noch etwas: Im Text steht:
Eine positive Zahl mit beliebig vielen Stellen kann man über eine Rekursion erzeugen:
<Positive Zahl> = <Ziffer> | <Ziffer ausser Null> <Positive Zahl>
Eine positive Zahl ist also eine Ziffer oder eine Ziffer ausser Null gefolgt von einer positiven Zahl. Dazu passen also die Folgen 0, 1, 2, ...,10, 11, ... 99, 100,..., 100000, ..., 45691283284.
- So können Zahlen nur an letzter Stelle die Ziffer 0 enthalten. 100 oder 100000 wären also nicht möglich. --Aico 20:42, 15. Aug 2004 (CEST)
Die Definition von <Positive Zahl> erzeugt nicht die gewünschte Menge wie richtigerweise oben bemerkt. Der von mir produzierte Fehler ist jetzt korrigiert. --Dlb 22:33, 23. Okt 2004 (CEST)
Das mit dem Fehler ist zwar korrekt, mit vier Nichtterminalsymbolen ist der Einführungstext jetzt reichlich kompliziert und verworrenhatte mich vertan, sorry. --Hubi 00:57, 24. Okt 2004 (CEST)
- Die Verwendung des Beispiels mit den "positiven Zahlen" lenkt etwas vom eigentlichen Thema ab. Unter dem Begriff Positive_Zahl können verschiedene Inhalte verstanden werden und in der Informatik ist die Verwendung des Begriffes noch spezieller. Vergleiche z.Bsp. die häufig gebräuchliche Repräsentation im Artikel weiter unten:
- ziffer = "0" | "1" | "2" | "3" | ... | "9" .
- positivezahl = ziffer | ziffer positivezahl .
- Womit auch 006 zur formalen Sprache der der obigen BNF entsprechenden kontextfreien Grammatik gehört. --Dlb 17:12, 24. Okt 2004 (CEST)
- Ja, das muss noch nach und nach korrigiert werden. Allerdings handelt es sich um einen Einführungstext, wo Genauigkeit zwar schon unabdingbar ist, jedoch zunächst für die Zielgruppe (Hinführung zum Thema) noch irrelevant. Das Beispiel weiter unten muss korrigiert werden. Durch die Änderungen des Artikels in letzter Zeit wurde aber die zugegebenermaßen fehlerhafte Zahldefinition ohne 006 etc. für einen Einführungstext reichlich kompliziert. Ich glaube, mit der Einführung von Ziffernfolge und darauf aufbauend dann einer Zahl ist man auf dem richtigen Weg. Fachbegriffe wie "Echt positive Zahl" etc. wie kürzlich im Text stören dagegen eher. --Hubi 21:11, 24. Okt 2004 (CEST)
Bezeichner
[Quelltext bearbeiten]Im Pscal-Beispiel: Es ist ziemlich unsinnig, die Bezeichner in die Grammatik aufzunehmen. Entweder muesste man dann anfangen Whitespaces explizit zu behandeln (macht das Beispiel entgueltig fuer einen Unwissenden unlesbar), oder aber, man erlaubt sowas wie:
PROGRAM Ein Bezeichner mit beliebig Leerzeichen drin BEGIN ... END.
--FAR
- Pascal erlaubt keine Leerzeichen in Bezeichnern (nicht mal Unterstriche)
PROGRAM BezeichnerohneLeerzeichendrinnurBuchstabenundZiffernwieimBeispieldargestellt BEGIN ... END.
- Leerzeichen/Kommentare müssen von der lexikalischen Analyse richtig behandelt werden und werden in der Syntaxdarstellung ausgenommen. Die BNF dient hauptsächlich der widerspruchsfreien Dokumentation der Syntax, eben auch der Bezeichner. Alle mir bekannten Reports (Modula-2, Ada) stellen Bezeichner und Konstanten mit Hilfe (E)BNF dar, so wie's im Artikel dargestellt ist. Dass Bezeichner keine Schlüsselwörter sein und keine Leerzeichen haben dürfen und Kommentare beliebig eingestreut werden können, wird dann im Text dargestellt und geht über die BNF-Darstellung hinaus.
- Ada erlaubt etwa nur einen Buchstaben am Anfang, danach Ziffern, Buchstaben und Unterstriche, diese jedoch nur einzeln, also A_B, aber nicht A___B. Dies kann man in (E)BNF sehr gut darstellen, jedoch nicht die maximale Länge, Unterscheidung von Gross-/Kleinbuchstaben, Nichtzulassung der Schlüsselwörter etc. Resumée: Die syntaktische Darstellung der Bezeichner in BNF ist Usus und eine Aufgabe der BNF. Von unsinnig kann keine Rede sein.
- --Hubi 08:00, 15. Nov 2005 (CET)
- Ich hab nix dagegen, die Bezeichner in (E)BNF zu beschreiben. Nur duerfen die Beschreibungen der lexikalischen und der syntaktischen Struktur nicht in einem Block, gleichberechtigt und kommentarlos nebeneinander gestellt werden. Schlieszlich definiert die lexikalische Beschreibung (implizit) eine Transformation 'String' -> 'Tokens', waehrend die syntaktische vom Typ 'Tokens' -> 'Syntaxbaum' (o.ae.) ist. Ich fuer meinen Teil habe auch noch nie eine so kompaktierte Beschreibung gesehen - entweder werden lexikalische Struktur und Syntax komplett getrennt (etwa in der Sprachbeschreibung von Haskell, wobei hier sogar noch die Syntax aufgeteilt ist, dies allerdings der Uebersichtlichkeit halber), oder aber die lexikalische Struktur wird halb-formell angeschlossen, sodass man zumindest erahnen kann, dass man zwei verschiedene Alphabete hat.
- Beispiel:
'Ausdruck' ::= 'Ausdruck' + 'Ausdruck' | 'Zahl' Wobei zwischen Zeichen beliebige Formatierungszeichen erlaubt sind und Zahlen die Form 'Zahl' ::= ... haben.
- --FAR 10:56, 29. Nov 2005 (CET)
- Schau z.B. mal da (das ist so bei Algol/Pascal/C artigen Sprachen üblich, die EBNF-Beschreibung wird ohne weiteres über Bezeichner und Konstanten bis zu Buchstaben/Zahlen geführt.
- --Hubi 15:21, 29. Nov 2005 (CET)
- Ja, Tatsache. Hier wird wirklich alles in einen Topf geschmissen - was allerdings noch kein Argument dafuer ist, dass es auch vernuenftig waere, das zu machen.
- In den beiden Faellen wird die Grammatik klar untergliedert (besonders im zweiten), und eben nicht kommentarlos in zusammengeschmissen. --FAR 06:02, 9. Dez 2005 (CET)
Abgeschlossene Lesenswert-Diskussion
[Quelltext bearbeiten]Die Backus-Naur-Form oder Backus-Normalform, kurz BNF, ist eine kompakte formale Metasyntax (Metasprache), die benutzt wird, um kontextfreie Grammatiken ( = Typ-2-Grammatiken, vgl. Chomsky-Hierarchie) darzustellen.
- pro - hat zwar einen Moment gedauert, um das ganze inhaltlich zu verarbeiten, für mich als Laie scheint dieser Text allerdings alles wesentliche in gebotenem Umfang zu enthalten - klassisch "lesenswert", wenn auch nicht unbedingt omatauglich -- Achim Raschka 17:31, 24. Feb 2006 (CET)
- Cottbus 05:38, 25. Feb 2006 (CET) Pro
- Thornard, Diskussion, 10:58, 27. Feb 2006 (CET) Pro
- PatrickD 20:37, 2. Mär 2006 (CET) Pro
XOR
[Quelltext bearbeiten]Stellen die „|“ XOR-Verknüpfungen dar? --Abdull 17:28, 6. Aug 2006 (CEST)
- normal als logischer Operator "oder" OR --SonniWPinformatik 16:29, 10. Sep. 2007 (CEST)
Alternative Notation?
[Quelltext bearbeiten]In den Vorlesungen wurde uns folgende Notation der BNF zur Definition eines Data-Dictionary beigebracht:
Datenelement = E2 + E3 + (optional E4)
Datenelement = [Alternative1, Alternative2]
Datenelement = {wiederholtes Element}
Ich konnte das im Artikel nicht finden...
--Cgxo 16:58, 5. Okt 2006 (CEST)
Layout Bug
[Quelltext bearbeiten]Das Bild überlagert den Text in 1024x768 Auflösung. Ideen?
- Das dürfte an deinem Browser liegen, welchen hast du (mit Version und built)? --SonniWPinformatik 16:32, 10. Sep. 2007 (CEST)
- Bei mir das gleiche. habe Keinen Internet Explorer, sondern Iceweasel. 31.19.66.155 17:49, 9. Jun. 2013 (CEST)
- Ja, sieht scheußlich aus! Firefox 35.0.1 Win 8 --Cami de Son Duc (Diskussion) 14:44, 2. Feb. 2015 (CET)
- Bei mir das gleiche. habe Keinen Internet Explorer, sondern Iceweasel. 31.19.66.155 17:49, 9. Jun. 2013 (CEST)
BNF für Grammatiken / formale Definition
[Quelltext bearbeiten]Ich vermiss hier irgendwie die formale Definition der BNF für Gramatiken so wie zum Beispiel im Schöning Theoretische Informatik kurzgefasst zu finden ist. Vieleicht kann das mal jemand nachtragen, oder ich mach das mal irgendwann wenn ich Zeit habe. Gruß Azrael. 18:34, 9. Sep. 2007 (CEST)
Postadressen-Beispiel
[Quelltext bearbeiten]Die reine Lehre der BNF scheint die Option mit eckigen Klammern ja nicht zu enthalten. Zumindest im Schöning wird das der EBNF zugeschrieben. Die entsprechenden Änderungen einiger Benutzer lassen uns jetzt mit einem zu EBNF erklärten Beispiel im Artikel zur BNF zurück. Ich bitte um einen Literaturbeleg, in dem das genannte Element zur BNF gezählt wird. Andernfalls sollte man den Abschnitt entfernen, da der Artikel EBNF bereits ein eigenes Beispiel enthält. -- Flipote Theoprakt 20:34, 9. Aug. 2009 (CEST)
Schlechte Optik!
[Quelltext bearbeiten]Könnte der Autor mal die überlappenden Bild- und Textkästen in Ordnung bringen?! Wäre schön! --Cami de Son Duc 18:52, 30. Apr. 2011 (CEST) Ach! S. O. Layout Bug. Habe Win XP mit Firefox 4.0
- Gleiches Problem. Habe LINUX und Icewaesel. Scheint wohl weder an Browser noch an OS zu liegen, sondern vermutlich an WIKIPEDIA-Formatierung. Bitte mit diversen Browsern und OS überprüfen. 31.19.66.155 17:56, 9. Jun. 2013 (CEST)
Weblink
[Quelltext bearbeiten]Folgender Link funktioniert nicht mehr (Stand 30.08.2011):
Vergleich der BNF-Varianten (englisch)
Weiß jemand wohin die Seite umgezogen ist? (nicht signierter Beitrag von 87.170.64.61 (Diskussion) 20:29, 30. Aug. 2011 (CEST))
Definition von Zahl
[Quelltext bearbeiten]<Zahl> ::= <Positive Zahl> | - <Positive Zahl>
Dabei wird 0 nicht behandelt. Außerdem sollte in der Bezeichnung des Symbols erwähnt werden, dass nur Ganze Zahlen behandelt werden. (nicht signierter Beitrag von 91.115.174.248 (Diskussion) 23:01, 19. Nov. 2011 (CET))
Backus-Naur-Form Syntax fehlt
[Quelltext bearbeiten]Den Artikel mit Beispielen aufzubauen finde ich grundsätzlich positiv. (Auch wenn es hier zu erheblichen Layou-Problemen kommt - scheinbar OS- u. Browser-unabhängig). Leider fehlt aber die Syntax der Backus-Naur-Form, so wie in WIKI/erweiterte_Backus-Naur-Form; dies wäre sehr hilfreich. Für Änderungen - vielen Dank im Voraus. 31.19.66.155 18:04, 9. Jun. 2013 (CEST)
- Beispiel: guru-home.dyndns.org/Compilerbau.html#box-2 --> BACKUS-NAUR-FORM 31.19.66.155 18:08, 9. Jun. 2013 (CEST)
Modifikationen der BNF
[Quelltext bearbeiten]"Modifikationen der BNF" ist komplett ohne Quelle. Bitte um Quellvermerke. (nicht signierter Beitrag von 138.246.2.202 (Diskussion) 12:45, 3. Nov. 2013 (CET))
Alle Beispiele sind regulär
[Quelltext bearbeiten]Ich finde es nachteilig, dass alle Beispiele im Artikel reguläre Sprachen beschreiben. Es sollte ein nicht-reguläres kontextfreies Beispiel dabei sein, z.B. eine Anweisung (wie if), die andere Anweisungen echt enthält. Außerdem ist es inkonsequent, im Pascal-Beispiel erst die lexikalische Analyse von der Syntaxanalyse getrennt zu beschreiben und anschließend in einer Grammatik beides abzuhandeln; die Grammatik ist dann im Allgemeinen mehrdeutig (das war allerdings schon in Algol 60 so).
Im Übrigen sind Programmiersprachen nicht kontextfrei – vielmehr wird in Compilern der nicht kontextfreie Teil der Syntax (z.B. dass alle Variablen deklariert sein müssen) unter "Semantik" abgehandelt. Genaugenommen müsste es also heißen: "BNF dient zur Spezifikation der Teile der Syntax von Programmiersprachen, die sich mit kontextfreien Grammatiken beschreiben lassen" oder ganz tautologisch "BNF dient zur Spezifikation der Teile der Syntax von Programmiersprachen, die sich damit beschreiben lassen". Dieses Fass würde ich jetzt allerdings nicht aufmachen; das gehört präzise beschrieben, sonst wird der jetzt gut lesbare Artikel verdorben. [Sorry, anscheinend Unterschrift vergessen; wird jetzt nachgeholt: --Lantani (Diskussion) 12:56, 16. Feb. 2016 (CET)]
Frage zur Aussprache
[Quelltext bearbeiten]wie wird Backus-Naur phonetisch gesehen ausgesprochen? --91.38.246.190 22:55, 5. Apr. 2016 (CEST)
Beispiel Postadresse
[Quelltext bearbeiten]Das Beispiel gilt für einen typisch amerikanischen Namen à la "Alfred E. Neumann". Deutsch wäre m.E.:
<Vornamenteil> ::= <Vorname> | <Vornamenteil>
à la "Peter Paul Rubens".--Mideal (Diskussion) 10:58, 12. Sep. 2017 (CEST)