A Ruby programozási nyelv

Nyelvi elemek

1. Jelkészlet

A nyelvi elemek az ASCII karakterkészlet jeleinek sorozatából állhatnak. A program lexikális elemeit szükség esetén whitespace jelekkel határolhatjuk el egymástól, csakhogy a Ruby kicsit másként értelmezi a whitespace szót, mint más nyelvek: a szóköz és tabulátor karakterek mellett a backspace, a vertical tab, a form feed és a carriage return karakterek is idetartoznak, míg az újsor jele nem. A newline karakter csak akkor szolgál whitespace karakterként, ha a kifejezés a következő sorban egyértelműen folytatódik. Egy Ruby-program tulajdonképpen kifejezések sorozata, és az újsor-karakter általában a kifejezések elválasztására használatos. Egy soron belül a pontosvessző karakterrel érhetjük el ugyan ezt a hatást. A nyelv case sensitive, azaz megkülönbözteti a kis- és nagybetűket.

2. Azonosítók

Azonosítókban alapvetően az angol ábécé kis- és nagybetűi, a számjegyek és az aláhúzás karakter szerepelhetnek. A kérdőjel, a felkiáltójel, a dollárjel és a kukac karakter használatos még az azonosítók előtt ill. után. Az azonosítóknak betűvel vagy aláhúzásjellel kell kezdődniük és betűvel, számmal vagy aláhúzásjellel kell folytatódniuk. A nagy kezdőbetűs azonosítók konvenció szerint konstansokat vagy osztályneveket jelölnek. A globális láthatóságú változók nevei elé dollárjelet kell írnunk. A kukac karakter a példányváltozók elkülönítésére szolgál. Ha az azonosító elé nem írunk dollár- vagy kukackaraktert, az vagy lokális változót, vagy alprogramot jelöl. Az alprogramok nevei kiegészíthetők a kérdőjellel illetve felkiáltójellel. Ezzel hívhatjuk fel a figyelmet arra, hogy az alprogram igaz vagy hamis értékkel tér vissza illetve veszélyes tevékenységet végez. Például egy stack nevű objektum üres voltát az stack.empty? kifejezéssel kérdezhetjük le, tartalmát pedig a stack.clear! metódus hívásával törölhetjük. Ezek az kiegészítések szerves részét képezik az azonosítónak, ami azt jelenti, hogy egy programban előfordulhat a value, a $value, a value?, vagy a value! azonosító is vagy a fenti példában szereplő stack.clear! helyett a stack.empty! is használható lenne az adatszerkezet kiürítéséhez. Rubyban nincs az azonosítók hosszúságára vonatkozó megszorítás; a határ a gép memóriája. Természetesen a nyelv felhasznál néhányat a rengeteg lehetőség közül. A foglalt szavak listája a következő:

alias and BEGIN begin break case class def defined do else elsif END end ensure false for if in module next nil not or redo rescue retry return self super then true undef unless until when while yield

3. Literálok

A programban többféle numerikus literál is előfordulhat. A tízes számrendszerben felírt egész és lebegőpontos számok (pl. 123, -123, 1_23, 12.34, 1.2e-3), hexadecimális, oktális és bináris alakban felírt egész számok (pl. 0xffff, 0377, 0b1110110100), karakterek ASCII-kódjából előállított egész számok (pl. ?a, ?\C-a, ?\M-\C-a). Az aláhúzás karaktertagolásra való, a numerikus literálok belsejében figyelmen kívül hagyja az interpreter. A példákban szereplő \C- a kontroll plusz-, a \M- a meta plusz karaktereket jelöli. Minden egész típusú literál az Integer és minden lebegőpontos típusú literál a Float osztály egy-egy példánya. A stringliterálok kétfélék lehetnek: macskakörmök közé zárt stringek és aposztrófok közé zárt karaktersorozatok. A Perl és Unix shellszkriptekhez hasonlóan a dupla idézőjel az engedékenyebb forma, ebben elvégződnek a backslash jellel kezdődő escape szekvenciák helyettesítései és az ún. kifejezés-helyettesítés, míg az aposztrófok közt csak a \' és a \\ szekvenciák használhatóak. A stringliterál mindig egy sorban kell, hogy elhelyezkedjen. Stringekben és karakterliterálokban is használhatóak a - többnyire C nyelvből - jól ismert escape-szekvenciák:

\t - tabulátor, \n - új sor, \r - carriage return, \f - lapdobás, \b - backspace, \e - escape, \s - szóköz, \nnn - karakter oktális kódja, \xnn - karakter hexadecimális kódja, \cx vagy \C-x - Control+x, \M-x - Meta+x, \M-\C-x - Control+Meta+x, \x - ha x nem a fentiek egyike, akkor maga az x karakter.
Stringekben használható még egy speciális nyelvi elem, mellyel egy kifejezés értékét tudjuk a stringben elhelyezni. Ezt egy # jel után kapcsos zárójelek közé kell írnunk:
"normál string #{ruby kifejezés} normál string"

4. Megjegyzések

Egysoros megjegyzéseket a szkriptnyelvekben megszokott # jel után írhatunk egészen a sor végéig, persze csak ha a komment jel nem egy string vagy karakterliterál belsejében fordult elő.

Többsoros kommenteket a sor elején kezdett =begin és =end utasítások közé írhatunk.

=begin Ez egy többsoros komment A komment folytatódik, a most következő =end utasítás ellenére is, mivel nem a sor elejére írtuk. =end

Valamint egy sor elejére írt __END__ karaktersorozat után mindent kommentnek vesz az interpreter.