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!)