Szintaxis
Osztályozás és szintaxis
A nyelv három fajta alprogramot ismer:
Beépített alprogramok olyan alprogramok, amelyek részei a nyelv definíciójának, és tetszőleges programban használhatóak.
Külső alprogramok Olyan alprogramok, amelyek definíciója a forráskódon kívül található, esetleg más nyelven íródott.
Belső alprogramok Olyan alprogramok, amelyek definíciója az adott program forráskódján belül található.
Belső alprogramok (internál subroutines) definiálása
A nyelv lehetőséget nyújt belső alprogramok (az alfejezeten belül a továbbiakban alporogramok) használatára.
Az alprogram definíciójának szintaxisa:
[alprogram] ::= [címke]: [utasítások] [return]
[return]::= 'return' | 'return' [kifejezés]
Az [címke] tetszőleges azonosító lehet, de nem végződhet ponttal. Az alprogram végét a return utasítás jelzi,
melynek hatására a vezérlés a hívóhoz kerül vissza. Lehetőség van rekurzív alprogramok írására. Az alprogramok
értéket is visszaadhatnak, a visszatérési értéket a return utasítás paramétereként kell megadni. A paramétereket
az ARG beépített függvény segítségével lehet lekérdezni. Alapesetben az alprogramon belül láthatóak, és változtathatóak
mindazon változók, amelyek láthatóak a hívás helyén. A változók levédése PROCEDURE utasítás segítségével történhet.
Paraméter nélkül az utasítás láthatatlanná teszi az összes külső váltózót az alprogram számára. A PROCEDURE EXPOSE
[változónevek] utasítás hatására a [változónevek]-ben felsorolt változók kivételével az összes többi külső változó
láthatatlan lesz az alprogram számára.
Alprogram meghívása
Kétféle formátum létezik:
CALL [alprogram neve] [paraméter lista]
Az [alprogram neve] nevű alprogramot a [paraméter lista] paraméterekkel meghívja. Ha az alprogram eredményt ad vissza,
az a RESULT változóba kerül. A [paraméter lista] az alprogramnak megadni kívánt paraméterértékek felsorolása, az egyes
értékeket szóközökkel kell elválasztani.
[függvény név] ( par_1,..,par_n)
Ez a hívási formátum csak értéket visszaadó alprogramok esetén megengedett. Ez egy kifejezés, amelynek a kiértékelése
során a [függvény név] nevű alprogram a par_1,..,par_n paraméterekkel meghívódik. A kifejezés értéke az alprogram
visszatérési értéke lesz.
Mindkét esetben az alprogram meghívása a következőképpen megy végbe:
- Ha létezik olyan belső rutin, amelynek a neve (címkéje) megegyezik a meghíváskor megadott alprogram névvel, akkor
a szóban forgó belső rutin hívódik meg.
- Ha nem sikerült illeszkedő belső rutint találni, akkor a megadott névre illeszkedő nevű előre definiált rutint keres
az interpreter.
- Ha nem sikerült illeszkedő nevű előre definiált rutint találnia, akkor megpróbál az interpreter külső rutint találni.
Általános tulajdonságok
- Csak érték szerinti paraméterátadás lehetséges.
- Az eljárás és a függvény a nyelvben meg van különböztetve.
- Nem lehet operatorokat átlapolni, viszont a beépített eljárásokat lehet.
- A belső alprogramok olyan értelemben átlapolhatóak, hogy ugyanolyan nevű alprogramok elfedhetik egymást.