2.1 – Лексические соглашения
Именами (идентификаторами)
в Lua могут быть любые строки из букв, цифр и символа подчеркивания, не начинающиеся с
цифры. Это правило типично для большинства языков программирования. (Понятие
буквы зависит от текущей локали: любой символ из алфавита текущей локали может
быть использован в составе идентификатора). Идентификаторы используются для
именования переменных и таблиц значений (table fields).
Следующие ключевые слова зарезервированы
и не могут быть использованы в именах:
and break do else elseif
end false for function if
in local nill not or
repeat return then true until while
Lua является языком, чувствительным к регистру символов: and –
ключевое слово, тогда как And и AND– два разных допустимых идентификатора. По соглашению, имена,
начинающиеся с символа подчеркивания и записанные в верхнем регистре (например _VERSION),
зарезервированы для использования в качестве внутренних глобальных переменных,
используемых Lua.
В следующих строках показаны другие допустимые символы:
+ * / % ^ < #
== ~= <= >= < > =
( ) { } [ ]>
; : , . .. ...
Литеральные строки должны быть заключены в одинарные или двойные кавычки и могут
содержать следующие С-подобные escape-поледовательности:
'\a' («звонок»), '\b' («забой»), '\f' («перевод страницы»),
'\n' («перевод на новую
строку»), '\r' («возврат
каретки»), '\t' («горизонтальная
табуляция»), '\v' («вертикальная
табуляция»), '\\\"' («двойная
кавычка»), and'\'' (апостроф [«одинарная кавычка»]). Кроме
того, обратный слеш ставится перед концом строки в редакторе, когда для
удобства набора длинные непрерывные строки записываются в несколько строк. Символ
в строке также может быть представлен своим кодом с помощью escape-последовательности \ddd, где ddd-
последовательность из не более чем трех цифр. (Заметим, что если после символа,
записанного с помощью своего кода, должна идти цифра, то код символа в escape-последовательности
должен содержать ровно три цифры). Строки в Lua могут содержать любые 8-битные
значения, включая ноль, который записывается как '\0'.
To put a double (single)
quote, a newline, a backslash, or an embedded zero inside a literal string
enclosed by double (single) quotes you must use an escape sequence. Any other
character may be directly inserted into the literal. (Some control characters
may cause problems for the file system, but Lua has no problem with them.)
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 may run for several lines, do
not interpret any escape sequences, and ignore long brackets of any other
level. They may contain anything except a closing bracket of the proper level.
For convenience, when the
opening long bracket is immediately followed by a newline, the newline is not
included in the string. As an example, in a system using ASCII (in which 'a' is coded as 97, newline is
coded as 10, and '1' is coded as 49), the five literals below denote the same string:
a = ' alo\n123"' a = "alo\n123\"" a = '\97lo\10\04923"' a = [[alo 123"]] a = [==[ alo 123"]==]
A numerical constant
may 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
3 3.0 3.1416 314.16e-2 0.31416E1 0xff 0x56
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.
|