Lexikalische Konventionen
Namen (auch Bezeichner genannt) können in Lua eine beliebige Folge von Buchstaben, Ziffern und Unterstrichen sein, die nicht mit einer Ziffer beginnen. Dies deckt sich mit der Definition von Namen in den meisten Sprachen. (Wie ein Buchstabe definiert ist, hängt von der aktuellen Ländereinstellung ab: jedes Zeichen, das von der aktuellen Ländereinstellung als alphabetisch betrachtet wird, kann als Kennung verwendet werden.) Kennungen werden für die Benennung von Variablen und Tabellenfeldern verwendet.
and break do else elseif
end false for function if or
in local nil not null
repeat return then true until while
Lua ist eine Sprache, bei der Groß-/Kleinschreibung beachtet werden muss: and ist ein reserviertes Wort, aber And und AND stellen zwei unterschiedliche gültige Namen dar. Die Konvention besagt, dass Namen, die mit einem Unterstrich beginnen, gefolgt von einem Großbuchstaben (z.B. " _VERSION), für interne globale Variablen reserviert sind, die von Lua verwendet werden.
Die folgenden Zeichenfolgen bezeichnen andere Token:
+ - * / % ^ # <> !=
== ~= <= >= < > =
( ) { } [ ] || …
; : , . -> ..
- '\a' (Glocke)
- '\b' (Rücktaste)
- '\f' (Formularvorschub)
- '\n' (Zeilenumbruch)
- '\r' (Wagenrücklauf)
- '\t' (horizontaler Reiter)
- \v' (vertikaler Reiter)
- '\\' (Backslash)
- \"' (Anführungszeichen [doppeltes Anführungszeichen])
- '\'' (Apostroph [einfaches Anführungszeichen])
Darüber hinaus führt ein Backslash gefolgt von einem echten Zeilenumbruch zu einem Zeilenumbruch in der Zeichenfolge. Ein Zeichen in einer Zeichenkette kann auch durch seinen numerischen Wert angegeben werden, indem die Escape-Sequenz \ddd verwendet wird, wobei ddd eine Folge von bis zu drei Dezimalziffern ist. (Beachten Sie, dass wenn eine Ziffer auf ein numerisches Escapezeichen folgen muss, dies durch Verwendung von exakt drei Ziffern ausgedrückt werden muss.)
Zeichenketten in Lua können jeden 8-Bit-Wert enthalten, einschließlich eingebetteter Nullen, die als '\0' angegeben werden können. Literale Zeichenketten können auch in einem langen Format definiert werden, das von langen Klammern umgeben ist.
Eine öffnende lange Klammer der Stufe n ist definiert als eine öffnende eckige Klammer, gefolgt von n Gleichheitszeichen, gefolgt von einer weiteren öffnenden eckigen Klammer. So wird eine öffnende lange Klammer der Ebene 0 als [[ geschrieben, eine öffnende lange Klammer der Ebene 1 als [=[, und so weiter. Eine schließende lange Klammer wird in ähnlicher Weise definiert; eine schließende lange Klammer der Ebene 4 wird beispielsweise als ]====] geschrieben. Eine lange Zeichenfolge beginnt mit einer öffnenden langen Klammer einer beliebigen Ebene und endet mit der ersten schließenden langen Klammer derselben Ebene. Literale können sich in dieser geklammerten Form über mehrere Zeilen erstrecken, interpretieren keine Escapezeichenfolgen und ignorieren lange Klammern aller anderen Ebenen. Sie können alles außer einer schließenden Klammer der geeigneten Ebene enthalten.
str1 = "this is a string"
str2 = 'this is also a string'
str3 = [[this string uses level 0 long brackets]] str4 = [=[this string uses level 1 long brackets]=] str5 = [==[this string uses level 2 long brackets]==]
a = 'alo\n123"'
a = "alo\n123\""
a = '\97lo\10\04923"'
a = [[alo
123"]]
a = [==[
alo
123"]==]
Eine numerische Konstante kann mit einem optionalen Dezimalteil und einem optionalen dezimalen Exponenten geschrieben werden. Lua akzeptiert auch ganzzahlige Hexadezimalkonstanten, wenn diesen das Präfix 0x vorangestellt wird. Beispiele für gültige numerische Konstanten sind:
3 3.0 3.1416 314.16e-2 0.31416E1 0xff 0x56
Ein Kommentar beginnt mit einem doppelten Bindestrich (--) an einer beliebigen Stelle außerhalb einer Zeichenkette. Wenn der Text unmittelbar nach -- keine öffnende lange Klammer ist, ist der Kommentar ein Kurzkommentar, der bis zum Ende der Zeile läuft. Andernfalls handelt es sich um einen langen Kommentar, der bis zur entsprechenden schließenden langen Klammer läuft. Erweiterte Kommentare werden häufig verwendet, um Code temporär zu inaktivieren. Erweiterte Kommentare verwenden dieselbe Form von eckigen Klammern, die auch für lange Zeichenfolgen verwendet werden. Ein erweiterter Kommentar der Ebene 0 beginnt mit --[[ und endet mit ]]. Ein erweiterter Kommentar der Ebene 1 beginnt mit --[=[ und endet mit ]=] usw.
-- This is a short comment
--[[
This is a long comment
]]
--[=[
This long comment uses level 1 brackets
]=]