Mivel a nyelv C alapú szintaxissal rendelkezik, így az abban megszokott módon kell a vezérlési szerkezeteket használni.
További infó
Operátorokban sem szégyenkezhet a nyelv, nagyon sokat örökölt a SmallCből.
| () | Függvényhívás |
| [] | Tömb elemére hivatkozás (cella) |
| {} | Tömb elemére hivatkozás (karakter) |
| ! | logikai tagadás |
| ~ | egyes komplemens |
| - | kettes komplemens (negálás) |
| ++ | inkrementálás |
| -- | csökkentés |
| : | tag definiálás |
| defined | szimbólum definiált státuszának lekérése |
| sizeof | szimbólum mérete elemszámban |
| state | állapot beállítása |
| tagof | tag egyedi azonosítója |
| * | szorzás |
| / | osztás |
| % | maradékosztás |
| + | összeadás |
| - | kivonás |
| >> | aritmetikai eltolás jobbra |
| >>> | logikai eltolás right |
| << | shift left |
| & | bitenkénti és |
| ^ | bitenkénti kizáró vagy |
| | | bitenkénti vagy |
| < | smaller than |
| <= | smaller than or equal to |
| > | greater than |
| >= | greater than or equal to |
| == | equality |
| != | inequality |
| && | logical and |
| || | logical or |
| ? : | conditional |
| = | smaller than |
| <= | smaller than or equal to |
| > | greater than |
| >= | greater than or equal to |
| == | equality |
| != | inequality |
| && | logical and |
| || | logical or |
| ? : | conditional |
A nyelvben nincsenek eljárás, csak függvény, amiknek nem kötelező visszatérési értéket megadni. (tehát generálhatunk eljárásokat is, hasonlóan, mint JavaScriptben)
A függvényhívások paramétereit átadhatjuk érték szerint, vagy cím szerint. Ez azért érdekes, mert csak itt használható a Cben használt referencia jel.
Függvények hívása hasonlóan történik mint C/C++ban. Érdekesség viszont az, hogy ha nem kell a visszatérési érték, a zárójelek és vesszők elhagyhatóak. Továbbá a paraméterek lehetnek nevesített paraméterek és pozícionált paraméterek. Nevesített paraméter esetén nem kell a megadott sorrendben felírni a paramétereket, csupán a híváskor megadni az értékeket.
A függvények paraméterei rendelkezhetnek alapértelmezett konstans értékekkel. Ekkor a függvény hívásakor ezen értékek megfadása nem kötelező. Ha az alapértelmezett értéket kívánjuk használni egy paraméternél, akkor a _ karaktert használjuk.
A függvények alapértelmezett értékeinél egy esetben megadhatunk nem konstans, azaz dinamikusan változó értéket. Ehez kell a sizeof operátor. Tömbök esetén használható, segítségével átadhatjuk egy tömb méretét. Ekkor a függvény hívásakor fog kiértékelődni az alapértelmezett érték, így minden híváskor más def érték keletkezik.
Az argumentumok taggelhetőek, növeli a fordítási időben a hibakeresést. A Javascripthez hasonlóan lehetőség van változó mennyiségű változó átadása egy függvénynek. Ehhez a ... argumentumot kell megadni, s a függvényben a getarg setarg parancsokkal lekérhetjük, módosíthatjuk az argumentumokat.
A függvények létrehozásakor elűáthatjuk további típusjelzőkkel az alábbiak közül: pubic, static, native, stock
Alapértelmezetten minden önálló programnak kell rendelkeznie egy main függvénnyel, vagy egy másik, publikus függvénnyel. Ezeket belépési pontnak nevezhetjük, hiszen hívhatóak az absztrakt gépen keresztül. (Tehát a maint el is hagyhatjuk, amennyiben rendelkezünk másik publikus belépési ponttal. (pl onkey)) Ilyen függvény létrehozásához elegendő a public kulcsszót használni (vagy a @ jelet)
Hasonló, mint a változóknál: célja a kód optimalizálása, és a memóriaigény csökkentése Ebből adódóan a native és public függvényeket nem lehet stock tulajdonsággal ellátni.
Ezen keresztül hívhatóak, az alkalmazás specifikus függvények. A native kulcsszóval kell deklarálni a függvényt.
A függvény nevek belső nevek, amiket a PAWN lát. Megadható egy külső név is, ami a host alkalmazás számára érhető el, ezeket "értékadással" kell a prototípus után írni. Fontos, hogy native függvényeknek nem lehet state tulajdonságokat beállítani. (Ezt később taglaljuk)
A felhasználóknak lehetőségük van operátorokat túlterhelni. Csak a meglévő operátork egy részét lehet csak túlterhelni, méghozzá saját tagekkel. Pár megkötés:
A C(++)szal ellentétben nem szükséges előre deklarálni a függvényeket, viszont felhasználó által definiált operátorok esetén ez már nem elhanyagolható, ezt jelezni kell előre. Ehhez egy új kulcsszót vezzettek be: forward Ezek lehetnek nativeok vagy stockok függvények is. (native esetén meg kell adnni a host program fgnevét is!)