no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


programmieren:ebnf:start [2021/12/29 11:40] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== Beschreibung der Syntax durch EBNF ======
 +Bisher haben wir die Syntax (also Struktur) unserer einfachen Programmiersprache mit einfachen Sätzen beschrieben. Das reicht aus, solange Autor und Leser im Kopf dieselbe Vorstellung von syntaktisch korrekten programmen (bislang: mathematischen Termen) haben. Zur Beschreibung umfangreicherer Programmiersprachen verwendet man eine eigene Beschreibungssprache, die EBNF (Erweiterte Backus Naur-Form). Es macht keinen Sinn, sie hier genauer zu beschreiben, da sie im Wikipedia-Artikel sehr gut und genau erklärt wird: [[http://de.wikipedia.org/wiki/Erweiterte_Backus-Naur-Form| Erweiterte Backus-Naur-Form (Wikipedia)]] \\ \\
 +
 +Die EBNF unserer bisherigen Programmiersprache sieht so aus:
 +
 +<code bnf>
 +Ziffer   = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
 +Buchstabe =  "A" | "B" | "C" | "D" | … | "Z" | "a" | "b" | … | "z" ;
 +Zahl = Ziffer { Ziffer | "." } ;
 +Text = Buchstabe { Buchstabe | Ziffer | "_" } ;
 +Term = "(" Summe ")" | Zahl | Text | "-" Term ;
 +Produkt = Term | Term "*" Term ;
 +Quotient = Term | Term "/" Term ;
 +ProduktQuotient = Produkt | Quotient ;
 +Summe = ProduktQuotient | ProduktQuotient "+" ProduktQuotient ;
 +Differenz = ProduktQuotient | ProduktQuotient "-" ProduktQuotient ;
 +</code>
 +
 +Natürlich ist die Definition von ''Zahl'' nicht realistisch, da sie beispielsweise erlaubt, dass Kommata mehrfach vorkommen können. Aber zum Verstehen der Thematik reicht das völlig aus. Realistische EBNFs machen den Compiler nur länger aber nicht komplizierter.
 +
 +Eine in EBNF beschriebene Grammatik der Programmiersprache Java findet man beispielsweise hier: [[http://markuskaupp.de/programmieren1_03/bnf2.pdf]]
 +
 +Natürlich beschreibt die Grammatik nicht die vollständige Programmierpsrache. Sie legt nur fest, was als syntaktisch richtig akzeptiert wird. Wie die Programmiersprache zu deuten ist (**Semantik** der Sprache) muss ergänzend festgelegt werden. Eine Spezifikation der Semantik von Java findet sich hier: [[http://docs.oracle.com/javase/specs/jls/se7/html/|Java Language Specification]]
 +
 +Jetzt werden wir die [[programmieren:erweiterung:start|Programmiersprache deutlich erweitern]], so dass sie auch Zuweisungen, Wiederholungen und eine einfache Print-Ausgabe besitzt. 
  
Drucken/exportieren
QR-Code
QR-Code programmieren:ebnf:start (erstellt für aktuelle Seite)