The following keywords are reserved and cannot be used as names:
Lua is a case-sensitive language: is a reserved word, but And
and AND
are two different, valid names. As a convention, names starting with an underscore followed by uppercase letters (such as ) are reserved for internal global variables used by Lua.
Literal strings can be delimited by matching single or double quotes, and can contain the following C-like escape sequences: ‘\a
‘ (bell), ‘\b
‘ (backspace), ‘\f
‘ (form feed), ‘\n
‘ (newline), ‘‘ (carriage return), ‘\t
‘ (horizontal tab), ‘\v
‘ (vertical tab), ‘\\
‘ (backslash), ‘\"
‘ (quotation mark [double quote]), and ‘\'
‘ (apostrophe [single quote]). Moreover, a backslash followed by a real newline results in a newline in the string. A character in a string can also be specified by its numerical value using the escape sequence \*ddd*
, where ddd is a sequence of up to three decimal digits. (Note that if a numerical escape is to be followed by a digit, it must be expressed using exactly three digits.) Strings in Lua can contain any 8-bit value, including embedded zeros, which can be specified as ‘\0
‘.
Literal strings can also be defined using a long format enclosed by long brackets. We define an opening long bracket of level n* as an opening square bracket followed by n equal signs followed by another opening square bracket. So, an opening long bracket of level 0 is written as , an opening long bracket of level 1 is written as [=[
, and so on. A closing long bracket* is defined similarly; for instance, a closing long bracket of level 4 is written as ]====]
. A long string starts with an opening long bracket of any level and ends at the first closing long bracket of the same level. Literals in this bracketed form can run for several lines, do not interpret any escape sequences, and ignore long brackets of any other level. They can contain anything except a closing bracket of the proper level.
A numerical constant can be written with an optional decimal part and an optional decimal exponent. Lua also accepts integer hexadecimal constants, by prefixing them with 0x
. Examples of valid numerical constants are
A comment starts with a double hyphen (--
) anywhere outside a string. If the text immediately after --
is not an opening long bracket, the comment is a short comment, which runs until the end of the line. Otherwise, it is a long comment, which runs until the corresponding closing long bracket. Long comments are frequently used to disable code temporarily.