Spezielle Zeichenkombinationen (Spezielle Zeichenkombinationen), Lektion, page 723645
https://www.purl.org/stefan_ram/pub/zeichenkombinationen_java (permalink) is the canonical URI of this page.
Stefan Ram
C#-Kurs
C++-Kurs
JavaScript-Kurs
Java-Kurs
C-Kurs

Spezielle Zeichenkombinationen

Neben dem schon behandelten Vorzeichenoperator »-« gibt es auch noch einen Operator »--«. Dieser Doppelminus-Operator »--« gilt als eine einzige lexikalische Einheit  und wird geschrieben, indem an einer Stelle, an der ein Operator stehen kann, zwei Minuszeichen direkt hintereinander  geschrieben werden. Diese beiden Zeichen gelten dann nicht  als eine Abfolge zweier Vorzeichen (zwei  lexikalische Einheiten), sie sind zu einer einzigen lexikalische Einheit, dem Doppelminus-Operator »--«, verschmolzen.

Zwei Vorzeichenoperatoren »-« (zwei lexikalische Einheiten), die direkt hintereinander stehen sollen, müssen durch Leerraum getrennt werden, damit sie nicht zum Doppelminus-Operator »--« (eine lexikalische Einheit) verschmelzen.

Zur Trennung zweier Vorzeichenoperatoren kann beispielsweise ein Leerzeichen verwendet werden.

Zwei mit einem Leerzeichen getrennte Vorzeichenoperatoren
- -

Die Bedeutung  des Doppelminus-Operators  »--« wird erst später  behandelt werden, da er vorerst nicht benötigt wird. Wo zwei Vorzeichen  hintereinander vorkommen können, wird in der nächsten  Lektion gezeigt werden.

Das hier für »-« Gesagte gilt auch für den Operator »+« entsprechend.

Es gibt zwar auch noch einige andere Zeichenkombinationen mit spezieller Bedeutung, aber diese werden nie  getrennt benötigt, so daß man sie sich nicht merken muß. Die Vorzeichenoperator stellen also eine Ausnahme dar.

Unter einem Sonderzeichen  verstehen wir hier ein Zeichen, das weder Buchstabe noch Ziffer, Leerzeichen oder Zeilenende ist. Beispielsweise sind »*« und »,« Sonderzeichen.

Man kann grundsätzlich davon ausgeben, daß Sonderzeichen nicht  mit Leerraum voneinander getrennt werden müssen. Nur zwei gleiche direkt aufeinanderfolgende Vorzeichen  müssen mit Leerraum voneinander getrennt werden, aber diese kommen in der Praxis nicht vor.

Zufällig verbessert ein Leerzeichen zwischen zwei Minuszeichen die Lesbarkeit nicht nur für die Implementation der Programmiersprache, sondern auch für Menschen, da zwei direkt aufeinanderfolgenden Minuszeichen manchmal wie ein einziger langer Gedankenstrich aussehen können.

Syntaxdiagramme

Das folgende Syntaxdiagramm bringt zunächst zum Ausdruck, daß eine Vorzeichenfolge aus aus optionalem Leerraum, der lexikalischen Einheit »-«, optionalem Leerraum, der lexikalischen Einheit »-« und wieder aus optionalem Leerraum bestehend darf.

Damit nicht  die lexikalische Einheit »--« entsteht, ist bei der Anwendung des folgenden Syntaxdiagramms Leerraum für den mittleren Pfeil einzusetzen. Obwohl ein Pfeil im Syntaxdiagramm meistens optionalen  Leerraum angibt, ist der Leerraum in diesem speziellen Fall also obligatorisch.

Syntaxdiagramm
Vorzeichenfolge
.-. .-.
--->( - )--->( - )--->
'-' '-'

Ob Leerraum obligatorisch (notwendig) oder optional (entbehrlich) ist, kann nicht  an den Syntaxdiagrammen alleine abgelesen werden! Vielmehr muß man sich noch zusätzlich  merken, daß Leerraum verwendet werden muß, wenn sonst eine lexikalische Einheit wie »--« entstehen würde, die in dem betreffenden Fall nicht gewünscht wird.

Nicht jedes Programm, das nach den Syntaxdiagrammen korrekt aufgebaut, ist auch ein korrektes Programm. Es sind auch noch weitere Regeln zu beachten, wie beispielsweise:

Einige weitere solcher Regeln werden im Verlauf des Kurses noch vorgestellt werden.

Andere Kombinationen lexikalischer Einheiten

In »-65« ist vergleichsweise kein  Leerraum nach dem Minuszeichen »-« nötig, weil »-65« nicht  als einzige lexikalische Einheit interpretierbar ist. Daher ist es hier auch ohne Leerzeichen klar, daß es sich bei dem Text um eine Abfolge zweier  lexikalischer Einheiten handeln muß. Es wäre aber auch die Schreibweise »- 65« mit  Leerraum erlaubt.

Operatoren

Nachdem wir zuvor einen Operator  als ein Zeichen  definiert hatten, welches in bestimmter Weise mit Literalen verbunden werden kann, um damit einen bestimmten Wert anzugeben, müssen wir Operatoren nun etwas allgemeiner definieren, weil wir jetzt schon vom Operator »--« gehört haben, der zwar eine lexikalische Einheit, aber kein  Zeichen ist:

Definition: Ein Operator  ist eine lexikalische Einheit, die mit Ausdrücken verbunden werden kann, um damit einen neuen Ausdruck zu ergeben.

Gieriges Verzehren *

Wenn an einer Stelle ein Zeichen zu der vor ihm stehenden lexikalischen Einheit hinzugezählt werden kann, so wird dies auch getan, selbst wenn es ebenfalls möglich wäre, das Zeichen als Beginn einer neuen lexikalischen Einheit anzusehen. So gilt »22« als eine  lexikalische Einheit, obwohl die beiden »2« isoliert betrachtet auch jeweils eine lexikalische Einheit darstellen, weswegen »22« auch als Folge zweier  lexikalischer Einheiten angesehen werden könnte.

Beim Lesen von Quelltext zerlegt die Implementation einer Programmiersprache den Quelltext zunächst in lexikalische Einheiten. Den Teil der Implementation, welcher dafür zuständig ist, nennen wir hier den lexikalischen Leser.

Wenn der lexikalische Leser einer Implementation der Programmiersprache beim Lesen von Programmen eine Zeichenfolge gefunden hat, welche der Anfang einer lexikalischen Einheit sein kann, und das nächste Zeichen mit dieser Zeichenfolge zusammen den Anfang einer lexikalischen Einheit bilden kann, dann wird jenes nächste Zeichen verwendet, um den bisherigen Anfang zu verlängern. Kurz gesagt versucht der lexikalische Analysator die lexikalischen Einheiten durch „gieriges Verzehren“ von Zeichen so lang wie möglich zu machen, er versucht so viele Zeichen wie möglich an eine einmal begonnene lexikalische Einheit anzuhängen.

Beispielsweise liest der lexikalische Leser zunächst das Zeichen »-«. Dies kann der Anfang einer lexikalischen Einheit sein. Wenn nun ein weiteres »-« gelesen wird, dann wird dies zu dem Anfang hinzugefügt, weil es auch eine lexikalische Einheit gibt, die mit »--« beginnt (nämlich die lexikalische Einheit »--« selber), und es entsteht »--«. Wenn nun noch ein Minus gelesen wird, so kann dies nicht mehr hinzugefügt werden, da »---« kein  Anfang einer lexikalischen Einheit mehr sein kann (es gibt keine lexikalische Einheit »---« und keine lexikalische Einheit, die mit »---« beginnt). Daher ist damit die erste lexikalische Einheit »--« erkannt und abgeschlossen, und das neue »-« wird als Anfang einer neuen lexikalischen Einheit behandelt.

Zerlegung in lexikalische Einheiten

Eingabe Zerlegung in lexikalische Einheiten

65 65
-65 - 65
--65 -- 65
---65 -- - 65
----65 -- -- 65
-----65 -- -- - 65

Der lexikalische Analysator arbeitet also unabhängig von der Syntax der Sprache und nimmt daher keine Rücksicht darauf, daß bei dieser Art der Analyse manchmal eine Folge lexikalischer Einheiten entsteht, die syntaktisch fehlerhaft ist, und durch eine andere Vorgehensweise eine Folge lexikalischer Einheiten gebildet werden könnte, die syntaktisch korrekt ist.

About this page, Impressum  |   Form for messages to the publisher regarding this page  |   "ram@zedat.fu-berlin.de" (without the quotation marks) is the email-address of Stefan Ram.   |   A link to the start page of Stefan Ram appears at the top of this page behind the text "Stefan Ram".)  |   Copyright 1998-2014 Stefan Ram, Berlin. All rights reserved. This page is a publication by Stefan Ram. relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723645 stefan_ram:723645 Spezielle Zeichenkombinationen Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723645, slrprddef723645, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Copyright 1998-2014 Stefan Ram, Berlin. All rights reserved. This page is a publication by Stefan Ram.
https://www.purl.org/stefan_ram/pub/zeichenkombinationen_java