Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

programmieren:ebnf:start [2015/02/06 09:51] (aktuell)
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)