A Lingo programozási nyelv

Nyelvi elemek

Nyelvi elemek

A Macromedia tudásbázisában olvashatjuk, hogy a Director többféle platformra készült el, eredetileg természetesen az angol nyelvű verzió látott napvilágot. Később külön francia, német, japán és koreai változat is készült. A fenti címen az olvasható, hogy a Macromedia Technical Support csak az ún. standard configuration esetére garantálja a hibamentes működést, olyannyira, hogy a nem standard configuration-ökön nem is végeztek még teljeskörű tesztelést. A standard configuration azt jelenti, hogy a Director és a használt operációs rendszer nyelvi beállításai összeegyeztethetők. Emiatt a különböző platformok és a Director különböző verzióinak jelkódolása, illetve az ezek közötti eltérések, keveredések nem várt problémákat okozhatnak. Ez természetesen kihat a Lingo jelkészletére is. A Director 7-es verziójáig ahhoz, hogy az angol nyelvű változatot pl. japán nyelvű Windows alatt egyáltalán el lehessen indítani, egy hardverkulcsra volt szükség, a jelkódolások (egy bájtos – két bájtos) különbözősége miatt.

Az angol nyelvű verzióban a Director MX nyolcbites kódolást használ, ami azt jelenti, hogy a jelkészlet az ASCII jelkészlettel egyezik meg, illetve arra képezhető le. Magyar Windows XP alatt ez az ISO-Latin 2 (ISO 8859-2) kódnak felel meg. A jelkódolások közötti különbség azonban nemcsak a különböző nyelvű Director-verziókban érhető tetten, hanem a különböző operációs rendszerek között is: így fordulhat elő, hogy az "A" < "a" összehasonlítás különböző eredményt ad Windows és MacOS alatt.

A Lingo nem case-sensitive nyelv, vagyis a kis- és nagybetűk egyenértékűek. Sztringliterálok esetén ez az állítás természetesen nem igaz, pontosabban részben igaz csak. A Lingo ugyanis az "abc" = "ABC" összehasonlítást igaznak tekinti, vagyis az = operátor nem casesensitive. Éppen ezért ha case-sensitive összehasonlítást akarunk végezni, az alábbi eseménykezelőt (~ függvényt) érdemes használni, mivel a >=, illetve <= operátorok viszont kisnagybetű érzékenyek:

on caseSensitiveCompare string1, string2
return (string1 <= string2) and (string1 >= string2)
end

Egy Lingo utasítás maximális hossza 256 karakter. Határoló jelként a szóköz használatos, a Lingo editora mindenhonnan törli az extra szóközöket, kivéve természetesen a sztringliterálokat és a kommenteket. A hosszú sorok törhetők, erre a 8.5-ös verzióig a ’¬’(hook) jel volt használatos, a 8.5 verziótól ennek szerepét a ’\’ (backslash) vette át.

Az utasítássorok végét soremelés (Enter) zárja, egyéb jel nem használatos az utasítások lezárására vagy elválasztására.

Fontos megemlíteni egy érdekességet, mely más nyelvekre nem annyira jellemző. Lingoban kétféle szintaxis használható, az ún. verbose és az ún. dot syntax. A programozónak nem kell állást foglalnia, vagy döntenie egyik mellett sem, a kódban tetszőlegesen használható mindkét szintaxis. A különbséget talán a legegyszerűbb egy példán keresztül bemutatni: Verbose syntax:

set the foreColor of sprite 10 to 200
Dot syntax:
sprite(10).foreColor = 200

A Director MX-ben a programozó munkáját sok beépített eszköz segíti, így a Lingo-hoz optimalizált editor, illetve több, a gyors kódszerkesztést segítő eszköz. Így például a Behavior Inspector is, mely szintén egy beépített kódszerkesztő és szereplők viselkedése kódolható vele gyorsan, menüvezérelten. Az egyes szereplőkön értelmezhető és leggyakrabban használatos viselkedések kódjait tudjuk vele gyorsan megszerkeszteni, a művelethez jóformán csak egérre van szükségünk, gépelnünk nem szükséges. Ennek használatakor a Director a verbose syntaxot részesíti előnyben.

Azonosítók

A Lingo-ban az azonosítókra vonatkozó szabályok többé-kevésbé megegyeznek a más nyelvekben szokásos konvenciókkal: egy azonosító betűvel kezdődik és betűvel vagy számjeggyel folytatódhat. A kis- és nagybetűk nincsenek megkülönböztetve azonosítókban.

A manual leírása alapján betű az angol abc 26 kis- és nagybetűje, illetve valamennyi olyan jel, amely ezekből ékezetek és mellékjelek segítségével létrehozható. Tapasztalataim szerint azonban csak általában használhatók a magyar ékezetes karakterek, ugyanis előfordult, hogy egy addig megmagyarázhatatlan hibajelenség nem jelentkezett a változónevek ékezetesről ékezetlenre változtatása után: ez azonban nem következetesen történt, ezért nem mernék egyértelműen állást foglalni a kérdésről… A javaslat tehát az angol abc 26 kis- és nagybetűje, illetve a decimális számjegyek használata. Érdekesség, hogy a Director nem tiltja, csak nem javasolja a Lingo kulcsszavak használatát azonosítóként, így használhatók azonosítóként akár az if, repeat, while stb. karaktersorozatok is. Tiltott viszont az ún. konstansok használata azonosítóként, melyek a következők: BACKSPACE, EMPTY, ENTER, FALSE, QUOTE, RETURN, SPACE, TAB, TRUE és VOID. Ezeken túl nem használhatók azonosítóként a „betűből álló” operátorok sem: not, and, or, mod, valamint a következő, a Lingoban szintén saját jelentéssel bíró karaktersorozatok: the, sprite.

Az azonosítók hosszára vonatkozóan külön korlátot nem találni a dokumentációkban, így lehet azt mondani, hogy a Lingo nem limitálja az azonosítók hosszát, korlátként így egyedül az utasítássoronkénti 256 karakteres maximum jelenthet (elvi) megkötést.

Literálok

Számliterálok

Egész számok (integer) –2 147 483 648 és +2 147 483 647 között vehetnek fel értéket. Valós számok (lebegőpontos számok, melyeket a Director decimal numbernek is nevez) megadására használható az egészrész.tizedesrész és a szokásos alap E kitevő formula is.

Ha ezt a formulát használjuk literálok megadására, a tizedespont jobboldalán nem szükséges számnak, számjegynek állnia, a baloldalon viszont igen, ha a kitevő negatív. Nemnegatív kitevő esetén a tizedepont bal oldalán nem szükséges értéknek állnia, ha az elmarad, a Lingo automatikusan 0-nak tekinti. Ha az egészrész.tizedesrész alakot alkalmazzuk, akkor elég a tizedespontnak csak az egyik oldalán számnak vagy számjegynek állnia.

Alapértelmezés szerint a Lingo 4 tizedesjegy pontossággal kezeli a lebegőpontos számokat, a pontosság 1–15 jegy között adható meg a floatPrecision() függvény alkalmazásával.

Sztringliterálok

A sztringeket idézőjelek (") között kell megadni. Sztringliterálokban a Director (és az operációs rendszer) által használt karakterkészlet elemei használhatók, a Director MX angol nyelvű verziója és magyar nyelvű Windows XP esetén ez az ISO-Latin 2 (ISO 8859-2). A sztringek maximális hossza nem limitált.

Megjegyzések

A Lingoban a megjegyzéseket -- (mínusz mínusz) jel vezeti be. Megjegyzéseket bármely sorban elhelyezhetünk, azonban a soron belül megjegyzés után már nem állhat utasítás, a megjegyzés vége egyben a sor vége is.