Backus-Naur-Form

In der Informatik ist BNF einer der beiden Hauptnotation Techniken für die kontextfreien Grammatiken, die oft verwendet werden, um die Syntax der Sprachen in Computernutzung verwendet werden, wie zum Beispiel Computer-Programmiersprachen, Dokumentenformate, Befehlssätze und Kommunikationsprotokolle zu beschreiben; die andere Haupt Technik für das Schreiben von kontextfreien Grammatiken ist die van Wijngaarden Form. Sie werden dort eingesetzt, wo genaue Beschreibungen von Sprachen werden benötigt: zum Beispiel im Amtssprache Spezifikationen, Handbücher, und in Lehrbüchern der Programmiersprache Theorie.

Viele Erweiterungen und Varianten des ursprünglichen Backus-Naur-Notation verwendet werden; einige sind exakt definiert, einschließlich Erweiterte Backus-Naur-Form und Augmented Backus-Naur-Form.

Geschichte

Die Idee, die die Struktur der Sprache mit Ersetzungsregeln lassen sich auf zumindest die Arbeit der Panini zurückverfolgt werden. Seine Notation, um Sanskrit-Wort-Struktur zu beschreiben Notation entspricht der Macht der von Backus und hat viele ähnliche Eigenschaften.

In der westlichen Gesellschaft, wurde die Grammatik lange als Thema für den Unterricht, sondern als wissenschaftliche Studie zu betrachten; Beschreibungen waren informelle und praktische Anwendung ausgerichtet. In der ersten Hälfte des 20. Jahrhunderts, Linguisten wie Leonard Bloomfield und Zellig Harris begann Versuche, die Beschreibung der Sprache, einschließlich Phrasenstruktur formalisieren.

Inzwischen String Umschreibregeln als formale, abstrakte Systeme wurden eingeführt, und studierte von Mathematikern wie Axel Thue, Emil Post und Alan Turing. Noam Chomsky, unterrichtet Linguistik an Studierende der Informationstheorie am MIT, kombiniert Linguistik und Mathematik, indem sie das, was ist im Wesentlichen Thue Formalismus als Grundlage für die Beschreibung der Syntax der natürlichen Sprache. Er führte auch eine klare Unterscheidung zwischen generativen Regeln und Transformationsregeln.

John Backus, eine Programmiersprache, Designer bei IBM, vorgeschlagen "metasprachliche Formeln", um die Syntax der neuen Programmiersprache IAL, heute bekannt als ALGOL 58 zu beschreiben, unter Verwendung des BNF-Notation. BNF ist eine Notation für Chomskys kontextfreien Grammatiken. Anscheinend Backus war mit Chomskys Arbeit vertraut.

Weiterentwicklung von Algol führte zu ALGOL 60; in ihrem Bericht, Peter Naur benannt Backus Notation Backus-Normalform, und vereinfacht es, den Zeichensatz zu minimieren. Doch Donald Knuth argumentiert, dass BNF eher als Backus-Naur Form gelesen werden kann, wie es ist "kein normaler Form im herkömmlichen Sinne", anders als zum Beispiel Chomsky Normalform. Der Name Panini Backus Form hat sich auch im Hinblick auf die Tatsachen, dass der Ausbau Backus-Normalform möglicherweise nicht genau vorgeschlagen worden, und das Panini hatten unabhängig voneinander eine ähnliche Notation früher entdeckt.

Einbringen

A BNF-Spezifikation ist ein Satz von Ableitungsregeln, wie geschrieben

wo & lt; Symbol & gt; ein Nicht-Terminal und der __expression__ besteht aus einer oder mehreren Sequenzen von Symbolen; Weitere Sequenzen werden durch den senkrechten Strich getrennt, '|', was auf eine Wahl, das ganze ein möglicher Ersatz für das Symbol auf der linken Seite. Symbole, die nicht an der linken Seite angezeigt werden, sind Terminals. Auf der anderen Seite, Symbole, die auf der linken Seite angezeigt werden, sind nicht-Terminals und werden immer zwischen dem Paar & lt eingeschlossen ist; & gt ;.

Die ":: =" bedeutet, dass das Symbol auf der linken Seite ist mit dem Ausdruck auf der rechten Seite ersetzt.

Beispiel

Als Beispiel betrachten wir dies möglich BNF für einen US-Postadresse:

Dieser übersetzt ins Englische als:

  • Eine Adresse besteht aus einem Namen-Teil, gefolgt von einer Straße-Adressteil, gefolgt von Postleitzahlen Teil.
  • Ein Name-Teil besteht aus entweder: eine persönliche teiligen, gefolgt von einem Nachnamen gefolgt von einem optionalen Suffix und End-of-line, oder einen persönlichen Teil gefolgt von einem Namensteil.
  • Ein Personal-Teil besteht aus entweder einer ersten Namens oder einer anfänglichen gefolgt von einem Punkt.
  • Eine Adresse besteht aus einer Hausnummer, gefolgt von einem Straßennamen, gefolgt von einem optionalen Wohnung Bezeichner, gefolgt von einer End-of-line.
  • Ein Zip-Teil besteht aus einem Stadt-Namen, gefolgt von einem Komma, gefolgt von einem Staat Code, gefolgt von Postleitzahlen, gefolgt von einer End-of-line.
  • Ein Opt-Suffix-Teil besteht aus einem Suffix wie "Sr.", "Jr." oder ein roman-Ziffer, oder eine leere Zeichenfolge.
  • Ein Opt-apt-num besteht aus einer Wohnung Zahl oder einen leeren String.

Beachten Sie, dass viele Dinge, die hier nicht näher links. Falls erforderlich, kann sie mit zusätzlichen BNF-Regeln beschrieben werden.

Weitere Beispiele

BNF-Syntax selbst kann mit einer BNF wie folgt dargestellt werden:

Beachten Sie, dass "" ist leer String, das heißt ohne Leerzeichen.

Die ursprüngliche BNF nicht genutzt Anführungszeichen, wie in & lt gezeigt; wörtliche & gt; herrschen.

Dies setzt voraus, dass keine Leerzeichen für die richtige Auslegung der Vorschrift notwendig ist. & lt; EOL & gt; stellt die entsprechende Zeile-End-Bezeichner. & lt; Regel-Name & gt; und & lt; Text & gt; sind, um mit einer erklärten Regelnamen / Etikett oder eine Zeichenfolge, die jeweils substituiert sein.

In der US-Postadresse Beispiel oben ist der gesamte Block-Zitat ein Syntax. Jede Zeile oder ungebrochene Gruppierung von Zeilen ist eine Regel; beispielsweise eine Regel beginnt mit "& lt; Namens-Teil & gt; :: =". Der andere Teil dieser Regel ist ein Ausdruck, der aus zwei Listen durch ein Rohr getrennt aus "|". Diese beiden Listen aus einiger Begriffe. Jeder Begriff in diesem besonderen Regel ist eine Regel-Namen.

Varianten

Es gibt viele Varianten und Erweiterungen der BNF, im allgemeinen entweder aus Gründen der Einfachheit und Prägnanz, oder sie an eine bestimmte Anwendung anzupassen. Ein gemeinsames Merkmal von vielen Varianten ist die Verwendung von Expressionswiederholungsopera regelmäßigen wie und. Der Erweiterte Backus-Naur-Form ist ein allgemeines. In der Tat das obige Beispiel ist nicht die reine Form für den Bericht ALGOL 60 erfunden. Die Klammer-Notation "" wurde ein paar Jahre später in IBM PL / I-Definition eingeführt, aber wird jetzt allgemein anerkannt. ABNF und RBNF können andere Neben häufig verwendet, um Internet Engineering Task Force Protokolle beschreiben.

Parsen Ausdruck Grammatiken aufbauen auf der BNF und Ausdruck Notationen regelmäßig, um eine alternative Klasse der formalen Grammatik, die im Wesentlichen analytische anstatt generative Charakter zu bilden.

Viele BNF Spezifikationen gefunden online heute sollen Menschen lesbar zu sein und sind nicht-formal. Diese enthalten oft viele der folgenden Syntax-Regeln und Erweiterungen:

  • Optionale Elemente in eckigen Klammern :.
  • Artikel wiederkehr 0 oder mehrere Male in geschweiften Klammern oder mit einem Sternchen ,, wie bzw. Suffix.
  • Artikel wiederholenden 1 oder mehrmals mit einem Zusatz Symbol suffixed ,.
  • Endgeräte können in Fett statt kursiv und Nichtterminale im Klartext statt spitzen Klammern angezeigt.
  • Alternative Möglichkeiten in einer Produktion werden durch das Symbol getrennt :.
  • Wo Elemente gruppiert sind, werden sie in einfachen Klammern eingeschlossen.
  0   0
Vorherige Artikel Apple Displays
Nächster Artikel Das Klima von Agra

Kommentare - 0

Keine Kommentare

Fügen Sie einen Kommentar

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Zeichen übrig: 3000
captcha