A ScriptKernel programozási nyelv

Utasítások, vezérlési szerkezetek

Értékadás, üres utasítás

Értékadás ugyanúgy, mint C-ben, de van lehetőség szimultán értékadásra is. A baloldalon véges számú változónak kell szerepelnie, a jobboldalon pedig egy olyan kifejezésnek, amelynek a típusa kompatibilis a baloldal változóival.
A jobb oldalon álló kifejezések minden értékét kötelező felhasználni! Azaz ha egy függvény visszatérési értékét nem használjuk fel, akkor az fordítási hiba.
Tegyük fel, hogy n1 és v1, illetve n2 és v2 azonos típusúak.

n1, n2 = v1, v2;
Szemantikája:
n1 = v1; n2 = v2;
Egy összetettebb példa:
function f() : i32, u32 { return 1, 2u; }
...
i32 x; u32 y;
x, y = f();

Üres utasítást (assembly-ben nop utasítás) csak egy üres függvény-törzzsel lehet kikényszeríteni, de programok írásakor erre nincs szükség, mert az elágazásnál és a ciklusoknál minden esetben kötelező kitenni a { és a } jeleket.

Főprogram

A főprogram (másnéven a program belépési pontja) a main blokkban helyezkedik el. Ezt a blokkot minden programnak tartalmaznia kell, és pontonsan egyet.
Ez tulajdonképpen egy függvény, de nincs se paramétere, se visszatérési értéke, és ezért azzal az egyszerűsítéssel él, hogy a function kulcsszót elhagyja.

Szekvencia

Szekvencia ugyanúgy, mint C-ben.

Elágazás

Az elágazásoknál három kulcsszó használható: if, elif, else. A feltételek kiértékelése felülről lefelé történik, és ha egy feltétel igaz lesz, akkor végrehajtja a hozzá tartozó blokkot, és elugrik az elágazás utáni első utasításhoz.

if(felt_1)
{
// utasítások
}
elif(felt_2)
{
// utasítások
}
elif(felt_3)
{
// utasítások
}
else
{
// utasítások
}
A { és a } kötelező, nem hagyhatóak el. Ennek az az oka, hogy ne okozzon problémát a csellengő if.

Ciklus

Négyféle ciklus létezik a nyelvben.
Elöltesztelős, addig hajtja végre a ciklusmagot, amíg a feltétel igaz.

while(felt)
{
// utasítások
}
Hátultesztelős, addig hajtja végre a ciklusmagot, amíg a feltétel igaz, de legalább egyszer lefut a ciklusmag.
do
{
// utasítások
}
while(felt);
Számlálós ciklus, ez egy while ciklussal helyettesíthető. A feltétel és az értékadások opcionálisak. Értelmezés: assign_1: kezdeti értékadás, felt: ciklusfeltétel (ha nincs, akkor végtelenciklus), assign_2: ciklusmag lefutása után hajtja végre ezt az értékadást.
for(assign_1;felt;assign_2)
{
// utasítások
}
Iteráló ciklus, ami egy megadott egész intervallumot képes bejárni.
foreach(_ident_ in _from_ .. _to_ [inclusive/exclusive] [reverse]) { // utasítások }
Ahol: