Sprachregeln
die Sprache unterscheidet zwischen Gross-und Kleinschreibung
Anweisungen müssen mit einem Semikolon abgeschlossen werden
rekursive Funktionsaufrufe werden nicht unterstützt
Ausdrücke werden von links nach rechts und von innen nach aussen ausgewertet
Typen
Typ | Wertebereich |
tile |
tDirt, tGreen, tShortGreen, tTree, tMark |
dir |
dNorth, dEast, dSouth, dWest |
bool |
TRUE, FALSE |
int |
-2.147.483.648 .. 2.147.483.647 |
float |
5.0 x 10^-324 .. 1.7 x 10^308 |
string |
Zeichenkette mit " geklammert. |
void | |
Hinweise:
- Ein konstanter float-Wert wird mit .(Punkt) angegeben.
- In Zeichenketten stehen folgende Sonderausdrücke zur Verfügung: /" (für ein doppeltes Hochkomma), // (für ein Slash), /r (Wagenrücklauf), /n (Zeilenumbruch).
- int kann auf float zugewiesen werden (zuweisungskompatibel)
- jeder Typ kann auf string zugewiesen werden (zuweisungskompatibel)
Ausdrücke
Ein Ausdruck hat immer einen Typ und einen Wert.
Der einfachste Ausdruck ist eine Konstante aus einem der definierten Typen.
Ein Ausdruck kann auch eine Variable, ein Funktionsaufruf oder das Ergebnis einer Operation sein.
Besondere Ausdrücke sind Vergleichsoperationen. Diese Ausdrücke haben immer den Typ bool.
Es können nur Operanden des selben Typs oder zuweisungskompatible Typen verglichen werden.
Operatoren
Operator |
Typ |
Beschreibung |
+ |
int |
Addition |
- |
int |
Substraktion |
* |
int |
Multiplikation |
/ |
float |
Division |
div |
int |
ganzzahlige Division |
% |
int |
Restdivision |
or |
bool |
oder |
and |
bool |
und |
not |
bool |
unäreres nicht |
Hinweise: - die Operatoren sind nach Bindung aufsteigend sortiert. zB bindet ein and stärker als ein div
Vergleichsoperatoren
Operator |
Beschreibung |
<= |
kleiner gleich |
>= |
grösser gleich |
== |
gleich |
!= |
ungleich |
< |
kleiner |
> |
grösser |
Hinweise: - die Operatoren sind nach Bindung aufsteigend sortiert
- die Bindung von Vergleichsoperatoren ist immer schwächer als die von Operatoren
- steht ein boolscher Ausdruck fest, werden alle übrigen Teilausdrücke nicht ausgewertet (Links-Rechts-Auswertung)
Kommentare
// kommentiert die gesamte Zeile aus.
Anweisungen
alle Angaben in eckigen Klammern [ ] sind als optional zu verstehen
Zuweisung: Variable = Ausdruck |
Variable - Name einer zuvor deklararierten Variable
Ausdruck - der Ausdruck muss vom selben Typ sein wie die Variable
|
meineZahl = (2 * 3) + 3;
tile1 = tile2;
deineZahl = meineZahl + deineZahl;
tile2 = getNextTile(1);
istWahr = (meineZahl == 18) or not (tile1 == tile2);
|
bedingte Anweisung: if (bool) [code] [elseif (bool)] [code] [else] [code] endif |
bool - ein Ausdruck vom Typ bool
code - eine Liste beliebig vieler Anweisungen
Der erste Codeblock wird ausgeführt, wenn der Ausdruck TRUE ergibt.
Ist der Ausdruck FALSE wird der zweite Codeblock ausgeführt.
Bedingte Anweisungen können beliebig oft verschachtelt werden.
|
if (meineZahl == 1)
tile1 = tile2;
meineZahl = 3;
endif
if (meineZahl == 1)
tile1 = tile2;
meineZahl = 3;
else
tile2 = tile1;
meineZahl = -1;
endif
if (meineZahl == 1)
tile1 = tile2;
meineZahl = 3;
elseif (meineZahl == 2)
tile2 = tile3;
meineZahl = 4;
else
tile2 = tile1;
meineZahl = -1;
endif
if (meineZahl == 1)
tile1 = tile2;
else
if (meineZahl == 3)
tile1 = tile2;
meineZahl = 4;
else
tile2 = tile1;
meineZahl = -1;
endif
tile2 = tile1;
meineZahl = -1;
endif
|
Schleife: while (bool) [code] endwhile |
bool - ein Ausdruck vom Typ bool
code - eine Liste beliebig vieler Anweisungen
Der Codeblock wird ausgeführt, solange der Ausdruck TRUE ergibt.
Schleifen können beliebig oft verschachtelt werden.
|
while (meineZahl < 6)
meineZahl = meineZahl + 3;
deineZahl = meineZahl + deineZahl;
endwhile
|
Variablendeklaration: Typ Name [Zuweisung] |
Typ - einer der möglichen Typen ausser void
Name - ein beliebiger eindeutiger Name. Darf nicht gleich einem Schlüsselwort sein und keine Operatoren enthalten.
Zuweisung - die Variable kann bei der Deklaration initialisiert werden
|
int meineZahl;
tile tile1;
int deineZahl = -1;
tile tile2 = tGreen;
bool istWahr = TRUE;
|
Funktionsdeklaration: function Name[([ref] Typ Parameter; ..)]: Typ [code] endfunction |
Typ - einer der möglichen Typen (void = kein Rückgabewert)
Name - ein beliebiger eindeutiger Name. Darf nicht gleich einem Schlüsselwort sein und keine Operatoren enthalten.
code - eine Liste beliebig vieler Anweisungen
([ref] Typ Parameter; ..) - eine optionale semikolongetrennte Liste mit Parametern
ref optionale Deklaration eines Referenz-Parameters. Referenz-Parameter müssen auch beim Funktionsaufruf mit ref angegben werden.
result stellt innerhalb der Funktion den Rückgabewert der Funktion dar
|
function meineFunktion(int parameterZahl; bool parameterWahr): tile
int privateZahl = parameterZahl + 1;
result = tGreen;
endfunction
function meineProzedur: int
int privateZahl = 4 + 1;
result = privateZahl + 4;
endfunction
function meineProzedur2(bool parameter): void
globalerWert = parameter and (a > meineProzedur);
endfunction
function meineProzedur3(ref bool parameter): void
parameter = not parameter;
endfunction
bool meinBool = TRUE;
meineProzedur3(ref meinBool);
//meinBool ist jetzt FALSE
|
|