A Jasmin programozási nyelv

Forráskód felépítése

Fejléc

Jasmin kód azzal kezdődik, hogy megadjuk az információkat az osztályról, amit definiálunk (ahogy azt javában megszoktuk, minden osztály külön fájlba kerül). Egy tipikus Jasmin fájl a következő direktívákkal kezdődik:

.source <source-file>

.class <access-spec> <class-name>

.super <class-name>

.source direktíva

Ez a direktíva opcionális. Megadja a forrásfájl nevét, amiben az osztály definiáltuk. Ha nem adjuk meg, akkor a Jasmin fájl nevét fogja kapni.

.class és .super direktíva

Megadja az osztály és az ősosztály nevét. Paramétereik a következő módon épülnek fel:

<class-name>

A teljes neve az osztálynak, ami tartalmazza a java csomagneveket is. Pl.: myPackage/MyClass

<acces-spec>

Ez definiálja az osztály hozzáférését és az egyéb attribútumait: public, private, abstract, final.

.interface direktíva

.class helyett használhatjuk ezt a direktívát is, amennyiben interface-t akarunk definiálni osztály helyett.

.implements direktíva

A három fent említett direktíva után felsorolhatjuk az esetleges implementált interface-eket, mindegyiket külön sorba, a következő módon:

.implements <class-name>

ahol a <class-name> megegyezik a .class direktívákban leírtakhoz.

Adattagok

Miután megadtuk az osztályra vonatkozó fejléc információkat, a következő lépés az adattagok definiálása. Ezt a következő módon tehetjük, adattagonként új sorban:

.field <access-spec> <field-name> <descriptor> [ = ]

ahol:

<acces-spec> a következő kulcsszavak lehetnek: public, private, protected, static, final, volatile, transient (szokásos java kulcsszavak);

<field-name> az adattag neve;

<descriptor> a típusleíró;

<value> a változó kezdőértéke.

Pl.: .field public static final PI F = 3.14

Metódusok

Az adattagok felsorolása után a fájl maradék része a metódusok leírása. Az általános forma a következő:

.method <access-spec> <method-spec>

<statements>

.end method

ahol:

<acces-spec> a javában megszokott láthatósági és meta információk: public, private, static, final, synchronized, native, abstract;

<method-spec> a metódusleíró (a nyelv szerkezeténél feltűntetett módon);

<statements> a metódus törzse, ami tartalmazza az utasításokat.

A metódusokat nem lehet egymásba ágyazni. Továbbá nincs implicit visszatérés. Ezt a return utasítás kiadásával érhetjük el.

Amennyiben absztrakt metódust kívánunk definiálni, akkor ezt a törzs elhagyásával tehetjük.

Metódus direktívák

Ezeket csak a metódusokon belül használhatjuk.

.limit stack

A stack maximum méretét adhatjuk meg.

.limit locals

A lokális változók maximumát adhatjuk meg vele.

.throws

Ezzel adhatjuk meg azokat a kivételeket, amiket a metódus dobhat (checked exeptions). Minden egyes kivételt külön-külön direktívaként kell megadnunk.

Ez absztrakt metódusban is megadható.

Fejlesztés alatt