Azonosító lehet betűk, számok, aláhúzásjelek tetszőleges sorozata, amely nem
számmal kezdődik. A karakterek érvényességét a nyelvi beállítás-függő isalpha
and isalnum
C függvények ellenőrzik. A betű jelentése ebben az esetben:
bármely karakter, ami a lokális karakterbeállítások szerint betűnek számít. A nyelv
ebből kifolyólag megkülönbözteti a kis- és nagybetűket. Konvenció szerint az aláhúzás
karakterrel kezdődő azonosítókat a Lua belső változói számára tartják fenn.
and break do else elseif
end false for function if
in local nil not or
repeat return then true until while
A Luában a numerikus konstansok legfőbb jellegzetessége, hogy opcionálisan
tartalmazhatnak tört részt és decimális exponenst. Hexadecimális konstansokat
is használhatunk, a 0x
előtaggal.
Például:
3 3.0 3.1416 314.16e-2 0.31416E1 0xff 0x56
A karakteres literálokat (stringeket) dupla vagy szimpla idézőjelek közt adhatjuk meg. Ellentétben más nyelvekkel, a Luában a szimpla és dupla aposztrófok ekvivalensek. Az aposztrófok között ugyanúgy érvényesek az escape szekvenciák, mint idézőjelek között. A C-hez hasonló módon itt is használhatunk ún. escape szekvenciákat, ezek jelentése a következő:
String literálokat egy alternatív, "hosszú" formában is definiálhatunk, szögletes zárójelek
között. Egy n-edik szintű nyitó szimbólum definíciója: egy nyitó szögletes zárójel, amit
n egyenlőségjel, majd egy második nyitó szögletes zárójel követ. Így egy 0. szintű
nyitó szimbólum [[
, egy 1. szintű [=[
, és így tovább. A záró
szimbólumokat hasonlóan definiáljuk. Például egy 4. szintű záró szimbólum így néz ki:
]====]
. Egy hosszú string egy tetszőleges szintű nyitó szimbólummal kezdődik
és az azonos szintű záró szimbólummal ér véget.
Ezek a hosszú literálok többsörösak is lehetnek, a bennük található escape szekvenciák nem kerülnek feldolgozásra, és figyelmen kívül hagynak minden más szintű nyitó/záró szimbólumot. Az azonos szintű záró szimbólum kivételével bármit tartalmazhatnak.
Ha egy hosszú sztringben a nyitó zárójelet közvetlenül egy új sor karakter követi, akkor az az új sor karakter nem lesz a string része.
Kommenteket - karakteres literálokon kívül - bárhol elhelyezhetünk. A
kommentet a --
jel vezeti be. Ha közvetlen utána nem
nyitó szimbólum következik, akkor a komment
egysoros. Különben hosszú kommentet kapunk, ami a megfelelő záró szimbólumig tart.
A következő jelek szintén önálló lexikai egységeket képeznek:
+ - * / ^ =
~= <= >= < > ==
( ) { } [ ]
; : , . .. ...