Ausdrücke und deren Syntax

Ausdrücke wie "länge-1" oder "(radius+5)*2" sind ein zentrales Element in Vips. Sie kommen fast überall vor, wo ein Wert eingegeben werden muss, beispielsweise bei der Zuweisung, der While-Schleife oder bei einem Aufruf in den Argumenten.
Jeder Ausdruck hat einen Wert und einen Typ. Wird ein Ausdruck verwendet, muss zunächst geprüft werden, ob sein Typ in Ordnung ist. Der Anfangswert eine Zählschleife ist beispielsweise auch ein Ausdruck. Dieser muss vom Typ Ganzzahl sein. Stimmt der Typ, so wird der Wert zur Laufzeit bestimmt (Ausdrücke werden immer erst zur Laufzeit ausgewertet, da sie Variablen enthalten können, deren Wert zur Entwicklungszeit noch nicht feststeht).
Der Typ des Ausdrucks muss aber nicht immer 100%-ig mit dem geforderten Typ übereinstimmen. Soll z.B. einer Variable vom Typ Kommazahl mit der Zuweisungs-Anweisung der Wert "-34" zugewiesen werden, der den Typ Ganzzahl hat, so ist dies kein Problem, die "-34" wird einfach zu "-34.0" erweitert. Umgekehrt funktioniert es genauso, in diesem Fall werden die Nachkommastellen abgeschnitten ("12.83" würde zu "12" werden). Ähnliches passiert, wenn einer Variable vom Typ Zeichenkette ein einzelnes Zeichen zugewiesen werden soll. Das Programm passt den Typ dann automatisch an. Man sagt: Zwei Typen sind zuweisungskompatibel.
Typ der Variable Mögliche Wert-Typen
Ganzzahl Ganzzahl
Kommazahl
Zeichen
Kommazahl Kommazahl
Ganzzahl
Zeichen Zeichen
Zeichenkette Zeichenkette
Zeichen
Wahrheitswert Wahrheitswert

Datentypen

Ganzzahl Eine Ganzzahl ist eine 32-bittige natürliche Zahl mit Vorzeichen, z.B. "23" oder "-4423".
(entspricht Datentyp int in Java)
Kommazahl Die Kommazahl stellt eine rationale Zahl dar (entspricht Datentyp double in Java). Exponentialschreibweise wird unterstützt, d.h. "23e-5" oder "-0.233e2" sind gültige Kommazahlen. Als Dezimaltrenner (Komma) muss ein Punkt verwendet werden.
Zeichen Ein Zeichen stellt einen einzelnen Buchstaben, z.B. 'A' oder ' ' dar (entspricht char in Java).
In einem Ausdruck muss das Zeichen in einfache Anführungszeichen gesetzt werden.
Zeichenkette Eine Zeichenkette ist ein Text (Datentyp String in Java). Eine Zeichenkette muss in einem Ausdruck in doppelte Anführungszeichen gesetzt werden ("blabla").
Um in einer Zeichenkette Sonderzeichen wie einen Zeilenumbruch darzustellen, können Escape-Sequenzen verwendet werden. Escape-Sequenzen bestehen aus einem Backslash ('\') und einem nachfolgenden Zeichen. Dieses Zeichen gibt die Art der Escape-Sequenz an.
Beispiel: "Hallo\nWelt" ergibt die Wörter "Hallo" und "Welt" in zwei Zeilen.
Unterstützte Escape-Zeichen sind:
  • \n: Neue Zeile
  • \t: Tabulator
  • \": Doppelte Anführungszeichen
  • \': Einfache Anführungszeichen
  • \\: Backslash
Wahrheitswert Ein Wahrzeitswert kann die Werte true für Wahr und false für Falsch annehmen (Datentyp boolean in Java).

Syntax


Ein Ausdruck besteht aus mehreren Operatoren (beispielsweise + oder *) und den dazugehörigen Operanden, ein unärer Operator benötigt einen Operanden, ein binärer zwei. Operatoren besitzten Prioritäten, bei "2+3*4" hat beispielsweise das '*' eine höhere Priorität als das '+' und deshalb wird erst "3*4" gerechnet und dann 2 dazuaddiert. Durch Verwendung von Klammern kann die Auswertungsreihenfolge geändert werden. Das Beispiel müsste dann "(2+3)*4" lauten.
Die Operanden können Variablen, Konstanten oder Literale sein. Die Operanden müssen einen Typ haben, mit dem der Operator etwas anfangen kann. Jeder Operator selber hat auch einen Typ, der Vergleichsoperator '=' ist beispielsweise vom Typ Wahrheitswert. Der Ausdruck "3+4=7" ist demnach vom Typ Wahrheitswert.

Operatoren

Priorität
(1 = höchste)
Operator Operanden Typ Beschreibung
1 +, - Zahl Zahl Unäres Plus und Minus
1 not Wahrheitswert Wahrheitswert Logisches Komplement
2 *, / Zahl, Zahl Zahl Multiplikation und Division
2 div Ganzzahl, Ganzzahl Ganzzahl Ganzzahlige Division
2 mod Ganzzahl, Ganzzahl Ganzzahl Divisionsrest (Modulo)
3 +, - Zahl, Zahl Zahl Addition und Subtraktion
3 + Zeichenkette, Zeichenkette oder Zeichen Zeichenkette Zeichenkettenverknüpfung
4 <, >, <=, >= Zahl oder Zeichenkette, Zahl oder Zeichenkette Wahrheitswert Vergleichsoperatoren
5 =, <> Alle Datentypen Wahrheitswert Test auf Gleichheit/Ungleichheit
6 xor Wahrheitswert, Wahrheitswert Wahrheitswert Logisches Exklusives Oder
7 and Wahrheitswert, Wahrheitswert Wahrheitswert Logisches Und
8 or Wahrheitswert, Wahrheitswert Wahrheitswert Logisches Oder