ORIGIN '~beta/basiclib/betaenv'; BODY 'Stackbody' (*Melyik file-ban talalhato az implementacio*) --- lib: Attributes --- (*Interface a Stack-hez. Az implementáció és az interface elválasztásának nagy elônye, hogy így külön fordítható egységeket kapunk. Az implementáció megváltozása esetén nem kell újrafordítani sem az interface-t, sem más olyan programot, ami felhasználja azt. Az ORIGIN, INCLUDE, BODY, descriptor, attributes, dopart kulcsszavak nem a Béta nyelv alapszavai, hanem a Béta fragment rendszer szavai. Tehát a fragment rendszerrel szétdarabolhatjuk a programunkat, bizonyos típusú részekre - descriptor, attributes, dopart. A darabolást úgy jelöljük, hogy lyukakat definiálunk a mintában, és ezeket a lyukakat késôbb kitöltjük. A végleges minta tehát már elôre adott (ez általában a betaenv környezet), a programunkat ebbe helyezzük bele. A fragment rendszer technikája a C elôfeldolgozójától annyiban tér el, hogy itt az egyes lyukaknak 'típusa' van, vagyis nem csak egyszerű szövegmásolás történik, hanem szemantikus vizsgálat is. A lyuk típusa úgy értendô, hogy az attributes slotban tényleg csak attributumok, a dopart slotban pedig csak utasítások szerepelhetnek, objektumdeklarációk csak descriptor slotban lehetnek. *) Stack: (# Private: @<> ; (*A Private objektum a privat: descriptor reszben van megadva a Stackbody-ban. *) Push: (# e: @integer enter e <> (*A Stackbody-ban a PushBody : dopart-ban megadott utasitasok helyettesitodnek ide.*) #); Pop: (# e: @integer <> exit e #); New: (# <> #); isEmpty: (# Result: @boolean <> exit Result #) #)