16.09.2017 Aufrufe

Vorkurs Informatik

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

18.3 Sprachtypen nach Chomsky 291<br />

Anforderung, die dies notwendig machen könnte, ist etwa, dass in Java ein Variablenname vor<br />

seiner Verwendung deklariert sein muss.<br />

Abbildung 18.4 zeigt einen Ausschnitt aus der Java-Grammatik. Die Notation unterscheidet<br />

sich von der bisher von uns verwendeten. Es kommt leider vor, dass Sprachentwickler immer<br />

wieder eigene Beschreibungsformen von Grammatiken entwickeln.<br />

In Abbildung 18.4 sind sechs Gruppen von Produktionsregeln aufgeführt, die der Definition von<br />

Fließkommazahlen dienen. Die erste Gruppe von Produktionsregeln beschreibt das sogenannte<br />

FloatingPointLiteral. „FloatingPointLiteral“ ist in der Grammatik ein Variablenzeichen. Es<br />

bildet die linke Seite einer ganzen Reihe von Produktionsregeln. Die rechten Seiten dieser Produktionsregeln<br />

folgen auf den Zeilenwechsel hinter dem Doppelpunkt. Jede der Zeilen stellt eine<br />

oder mehrere eigene rechte Seiten einer Produktionsregel dar, deren linke Seite das Nichtendzeichen<br />

FloatingPointLiteral ist. Zeilen bestehen aus einer Folge von Nichtendzeichen und Endzeichen.<br />

Nichtendzeichen sind an der kursiven Schrift mit initialen Großbuchstaben zu erkennen.<br />

Des Weiteren ist das Suffix „_opt“ zu beachten. Dieses Suffix drückt aus, dass das entsprechende<br />

Nichtendzeichen auch weggelassen werden kann. Auf diese Weise enthält die erste Zeile der<br />

Regelgruppe zum FloatingPointLiteral in Abbildung 18.4 eine ganze Reihe von rechten Seiten,<br />

die zu unterschiedlichen Produktionsregeln führen.<br />

Beispiele in unserer Notation sind<br />

FloatingPointLiteral → Digits . Digits ExponentPart FloatTypeSuffix<br />

FloatingPointLiteral → Digits . Digits<br />

FloatingPointLiteral → Digits . ExponentPart<br />

Beispiele für Gleitkommazahlen, die diesen Regeln genügen, sind 1.E − 14F,1.5 und .E − 14.<br />

Die in der ersten Regelgruppe verwendeten Nichtendzeichen werden in den folgenden Regeln<br />

konkretisiert. Die nächste Regelgruppe ist dem Exponenten gewidmet. Das entsprechende Nichtendzeichen<br />

auf der linken Seite ist ExponentPart. Die rechte Seite besteht aus zwei Nicht-<br />

Endzeichen ExponentIndicator und SignedInteger. ExponentIndicator wird in der nächsten Gruppe<br />

von Regeln definiert. Durch „one of“ ist ausgedrückt, dass die rechte Seite entweder aus einem<br />

kleinen e oder aus einem großen E besteht, also in unserer bisherigen Notation<br />

ExponentIndicator → e<br />

ExponentIndicator → E.<br />

„SignedInteger“ besteht aus einem Vorzeichen, also + oder −, welches auch weggelassen werden<br />

kann, sowie einer Folge von Zahlen. Das wird durch die Regelgruppe zu SignedInteger in<br />

Abbildung 18.4 ausgedrückt. Diese Regelgruppe enthält zwei Regeln, SignedInteger → Digits<br />

und SignedInteger → Sign Digits. Die fünfte Regelgruppe führt aus, was „Sign“ bedeutet, nämlich<br />

+ oder -.<br />

Die letzte Regelgruppe in Abbildung 18.4 ist dem FloatTypeSuffix gewidmet. Hier gibt es die<br />

vier Alternativen f, F, d und D. Diese drücken die schon bekannten float- beziehungsweise<br />

double-Typen aus.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!