Kombinationen von Operatoren in Java
Verwendung von Vorzeichenausdrücken als Operanden
Syntax
Ein Operand eines Multiplikativausdrucks muß nicht unbedingt ein Literal sein. Auch ein echter Vorzeichenausdruck ist erlaubt.
- Ein echter Vorzeichenausdruck als erster Operand eines Multiplikativausdrucks
-12 / 2
Im Ausdruck »-12 / 2« ist »-12« der erste Operand des Divisionsoperators »/«.
Eine Interpretation von »- 12/2«, derzufolge der Quotient ein Operand des Vorzeichens ist, kommt hingegen nicht in Frage, da der Operand eines Vorzeichenausdrucks ein Vorzeichenausdruck sein muß und »12/2« kein Vorzeichenausdruck ist.
Semantik
Bei der Auswertung eines Operatorausdrucks werden zunächst alle Operanden von links nach rechts ausgewertet. Dann wird die zum Operator gehörigen Operation mit den Operandenwerten verbunden und die entstandene Inkarnation ausgeführt, wodurch sich der Wert des Operatorausdrucks ergibt.
In der folgenden Liste notieren wir Aktionen (Rechenschritte) durch die zugehörige Inkarnation. Die Auswertung von Literalen wird dabei zur Vereinfachung nicht dargestellt.
- Eine Inkarnation ist die Verbindung einer internen Operation mit Werten für alle ihre Operandenstellen. Eine interne Operation ist ein internes Programm, das durch einen Operator und Operandentypen bestimmt ist. Beispielsweise
- Rechenschritte bei der Auswertung von »-12 / 2«
- [-int] «12»
- «-12» [int/int] «2»
Bildung von Primärausdrücken mit Klammern
Die bisher vorgestellte Syntax erlaubt als Operand eines Multiplikationsoperators »*« nur einen Vorzeichenausdruck, aber keinen weiteren Multiplikativausdruck. Um mehrere Multiplikationen in einem Ausdruck ausführen zu können, kann jedoch mit Hilfe der Klammern »(« und »)« aus einem beliebigen Ausdruck (Multiplikativausdruck) wieder ein Primärausdruck (Vorzeichenausdruck) gemacht werden, der dann als Operand eines Multiplikationsoperators, wie »*« oder »/«, verwendet werden kann.
- Zwei binäre Operatoren in einem Ausdruck
12 /( 12 / 2 )
Primaerausdruck (Wert 12 ) / Primaerausdruck (Wert 6)
- Zwei binäre Operatoren in einem Ausdruck
( 12 / 12 )/ 2
Primaerausdruck (Wert 1) / Primaerausdruck (Wert 2)
Semantik
Bei der Auswertung eines Operatorausdrucks werden zunächst alle Operanden von links nach rechts ausgewertet. Dann wird die zum Operator gehörigen Operation mit den Operandenwerten verbunden und die entstandene Inkarnation ausgeführt, wodurch sich der Wert des Operatorausdrucks ergibt.
Zur Auswertung von »12/(12/2)« werden zunächst die beiden Operanden »12« und »(12/2)« ausgewertet, wodurch sich die internen Werte «12» beziehungsweise «6» ergeben. Anschließend ergibt die Division jener beiden Werte das Endergebnis «2».
- Aktionen (Rechenschritte)
- «12» [int/int] «2»
- «12» [int/int] «6»
Zur Auswertung von »(12/12)/2« werden zunächst die beiden Operanden »(12/12)« und »2« ausgewertet, wodurch sich die internen Werte «1» beziehungsweise «2» ergeben. Anschließend ergibt die Division jener beiden Werte das Endergebnis «0».
- Aktionen (Rechenschritte)
- «12» [int/int] «12»
- «1» [int/int] «2»
Syntaxdiagramm
Hier wird zum Nachlesen noch einmal das Syntaxdiagramm aus der vorigen Lektion wiedergegeben.
- Syntax (Syntaxdiagramm)
Primaerausdruck
.-. .----------. .-.
--->.--->( ( )--->| Ausdruck |--->( ) )--->.--->
| '-' '----------' '-' ^
| .----------. |
'------------>| Literal |-------------'
'----------'Vorzeichenausdruck
.--------------------.
---.------------>| Primaerausdruck |----.---->
| '--------------------' ^
| .-. .--------------------. |
'--->( - )--->| Vorzeichenausdruck |----'
| '-' '--------------------' |
| .-. .--------------------. |
'--->( + )--->| Vorzeichenausdruck |----'
'-' '--------------------'Multiplikativausdruck
.--------------------.
---.--->| Vorzeichenausdruck |--------------------------------------.--->
| '--------------------' ^
| .--------------------. .-. .--------------------. |
'--->| Vorzeichenausdruck |--->( * )--->| Vorzeichenausdruck |---'
| '--------------------' '-' '--------------------' |
| .--------------------. .-. .--------------------. |
'--->| Vorzeichenausdruck |--->( / )--->| Vorzeichenausdruck |---'
'--------------------' '-' '--------------------'Ausdruck
.------------------------.
--->| Multiplikativausdruck |--->
'------------------------'