E fejezet témája a CorbaScript kifejezések szintaktikája. Ezek a szintaktikai konstrukciók általános érvényűek minden CorbaScript objektumra.
CorbaScript kifejezés lehet literál, azonosító, zárójelezett-, aritmetikai-, relációs-, logikai kifejezés, eljárás hívás, attribútum hivatkozás, metódus hívás, tömb és könyvtár létrehozás illetve indexelt hivatkozás.
<literal> ::= <long_literal> | <double_literal> | <character_literal> | <string_literal>
A kifejezés-azonosítók megegyeznek az előző fejezetben leírt azonosítókkal. Minden nevesített CorbaScript objektumnak (konstans, változó, típus, eljárás, osztály, modul stb.) lehet ilyen azonosítója. Két előre definiált konstans azonosító van (true és false), amelyek a két logikai értékhez vannak rendelve. A Void az egyedi üres objektumot reprezentálja.
A "+","-","*","/" a megszokott, a "%" és a "\" a maradékos osztás maradék és egészrész tagjai.
A klasszikus két operandusú relációs operátorok a "==","!=","<","<=",">",">=", visszatérési értékük egy logikai érték.
A bináris negáció a "!", a bináris és a "&&" , a bináris vagy a "||" karakterekkel adható meg.
Az eljáráshívás szintaktikája a következő:
Lásd az eljárásokról szóló résznél.
Változó értékadására a klasszikus módon az "=" operátor használható. Változónak értékül adható bármilyen kifejezés. A változót az első értékadással definiálhatjuk. Futás idő alatt a változó több féle típusú értékkel rendelkezhet.
Például:
A del utasítás segítségével egy adott azonosítóval megjelölt változót megszüntethetünk. Ezt az utasítást használhatjuk változókra és osztályattribútumokra is.
Mivel a CorbaScript egy objektum-orientált script nyelv, minden entitás , úgymint literálok, tömbök, szótárak, eljárások, osztályok, példány változók, kivételek, modulok, belső objektumokkal vannak reprezentálva. Minden objektum működése leírható, operátorok, attribútumok és metódusok halmazával.
Egy objektum viselkedését meghatározza a típusa. Ezen a típuson keresztül az interpreter ellenőrzi az operátorok, attribútumok, metódus hívások helyességét.
Ha egy típusellenőrzési hiba lép fel, az interpreter egy kivételt generál. Ráadásul a típusok is önálló CorbaScript objektumok.
A _type attribútum lehetőséget ad az objetumok típusának dinamikus lekérdezésére.
A következeő típusmanipulációs művelettek vannak:
object._type | Az object objektum típusa |
object._is_a(type) | igazat (true) ad vissza, ha az object objektum típusa type, vagy a type egy altípusa |
object._toString() | egy objektum szöveges reprezentációja |
type._type | a type típus metatípusa |
type._is_a(type2) | igazat (true) ad vissza, ha a type típus egyenlő, vagy altípusa a type2 típusnak |
type._toString() | a type típus szöveges reprezentéciója |
Az elemi típusok a boolean, long, double, char, amelyekre a klasszikus műveletek és opreátorok alkalmazhatók.
A String típus számos attribútummal, metódussal, operátorral rendelkezik.
Ezek a műveletek egymásba ágyazhatóak, de soha nem módosítják a cél stringet.
Ha a string méreténél nagyobb elemre hivatkozunk, BadIndex kivétel váltódik ki.
A string típus műveleteit, attribútumait a kövekező táblázat szemlélteti:
s.length | Visszaadja az s string hosszát |
s[i] | Visszaadja az i. pozición lévő karaktert. Az indexnek 0 és s.length-1 közé kell esnie. |
c+s | Összefűzi a c karaktert és az s stringet |
s1+s2 | Összefűzi az s1 és az s2 stringet |
s1==s2 | Igaz, ha s1 és s2 megegyezik |
s1!=s2 | Igaz, ha s1 és s2 nem egyezik meg |
s1igaz, ha s1 lexikografikusan kisebb, mint s2 |
|
s1<=s2 | igaz, ha s1 lexikografikusan nem nagyobb, mint s2 |
s1>s2 | igaz, ha s1 lexikografikusan nagyobb, mint s2 |
s1>=s2 | igaz, ha s1 lexikografikusan nem kisebb, mint s2 |
s.index(c) | c első előfordulásának indexét adja vissza. Ha s-ben nincs c, akkor -1 |
s.index(c,pos) | c első előfordulásának indexét adja vissza, a pos. index után. Ha s-ben nincs c, akkor -1 |
s.index(s2) | az s2 string első előfordulásának indexét adja vissza. Ha s-ben nincs s2, akkor -1 |
s.index(s2,pos) | az s2 első előfordulásának indexét adja vissza, a pos. index után. Ha s-ben nincs s2, akkor -1 |
s.rindex(c) | c utolsó előfordulásának indexét adja vissza. Ha s-ben nincs c, akkor -1 |
s.rindex(c,pos) | c utolsó előfordulásának indexét adja vissza, a pos. index előtt. Ha s-ben nincs c, akkor -1 |
s.rindex(s2) | az s2 string utolsó előfordulásának indexét adja vissza. Ha s-ben nincs s2, akkor -1 |
s.rindex(s2,pos) | az s2 utolsó előfordulásának indexét adja vissza, a pos. index előtt. Ha s-ben nincs s2, akkor -1 |
s.substring(bi) | az s string bi indextöl kezdődő részstringjét adja vissza |
s.subtring(bi,ei) | az s string bi és ei index közé eső részét adja vissza |
s.toLowerCase() | visszaadja az s string kisbetűs reprezentációját |
s.toupperCase() | visszaadja az s string nagybetűs reprezentációját |
A tömb egy dinamikusan növelhető konténer típus. Tömböt létrehozni a "[]" operátorokkal lehet, az elemeket a "," operátorral határolhatjuk el egymástól. A tömb elemei lehetnek külömböző típusúak, akár tömbök is.
Ha a tömb méreténél nagyobb elemre hivatkozunk, BadIndex kivétel váltódik ki.
A tömb típus műveleteit, attribútumait a kövekező táblázat szemlélteti:
a.length | Visszaadja az a tömb hosszát |
s[i] | Visszaadja az i. pozición lévő elemet. Az indexnek 0 és s.length-1 közé kell esnie. |
a[i]=v | a tömb i. elemét v-re cseréli |
a1+a2 | Összefűzi az a1 és az a2 tömböket |
a.append(v) | a v elemet az a tömb végéhez adja |
a.insert(v,i) | a v elemet beszúrja az a tömb i. pozíciójára |
a.delete(i) | kitörli a tömb i. pozicióján lévő elemet |
a.remove(v) | kitörli a v első előfordulását |
a.contains(v) | igaz, ha az a tömb tartalmazza a v elemet |
a.index(v) | v első előfordulásának indexét adja vissza. Ha a-ban nincs c, akkor -1 |
a.index(v,pos) | v első előfordulásának indexét adja vissza, a pos. index után. Ha a-ban nincs v, akkor -1 |
a.rindex(v) | v utolsó előfordulásának indexét adja vissza. Ha a-ban nincs v, akkor -1 |
a.rindex(v,pos) | v utolsó előfordulásának indexét adja vissza, a pos. index előtt. Ha a-ban nincs v, akkor -1 |
array.create(n) | létrehoz egy n hosszú, Void elemekkel feltöltött tömböt |
A szótár típus egy olyan konténerosztály, amelyben tetszőleges kulcs-elem párokat hatékonyan tárolhatunk.
A kulcsok és elemek tetszőleges CorbaScript objektumok lehetnek. Szótárat létrehozni a "{}" operátorokkal lehet, kulcs-elem párokat a ",", a kulcsokat az elemektől a ":" határolójel segítségével választhatjuk el.
Ha olyan kulcsra hivatkozunk, amely nincs a szótárban, NotFound kivétel váltódik ki.
Például:
dict.size | Visszaadja az szótárban lévő elemek számát |
dict.keys | Visszaadja az szótárban lévő kulcsokat |
dict.values | Visszaadja az szótárban lévő elemeket |
dict[key] | Visszaadja az szótárban lévő key kulcsú elemet |
dict[key]=value | a value elemet behelyezi a key kulccsal a szótárba |
dict.contains(value) | igaz, ha a szótár tartalmazza a value elemet |
dict.containsKey(key) | igaz, ha a szótár tartalmazza a key kulcsot |
dict.remove(key) | a key kulcsú elemet törli a szótárból |