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.

Die folgenden Schlüsselwörter sind reserviert und können nicht als Namen verwendet werden:

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:


+	-	*	/	%	^	#	<>	!=
==     ~=      <=      >=     <	>	 =		
(	)	{	}	[	]	||	…	
;	:	,	.	->	..			
Literale Zeichenketten können durch passende einfache oder doppelte Anführungszeichen abgegrenzt werden und können die folgenden C-ähnlichen Escape-Sequenzen enthalten:
  • '\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]==]
Wenn auf die öffnende lange eckige Klammer unmittelbar ein Zeilenumbruch folgt, wird der Zeilenumbruch der Einfachheit halber nicht in die Zeichenfolge eingeschlossen. In einem System, das ASCII verwendet (in dem "a" als 97, "newline" als 10 und "1" als 49 kodiert ist), bezeichnen die fünf nachstehenden Zeichenketten beispielsweise dieselbe Zeichenfolge:
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
]=]