Все инструкции в Lua выполнены в глобальной среде. Эта среда будет
инициализирована обращением к lua_open
и сохранится до обращения к
lua_close
или до завершения ведущей программы. В случае
необходимости программист может создавать много независимых глобальных сред и
свободно переключаться между ними.
Глобальная среда может управляться Lua-кодом или ведущей программой, которая может читать и писать глобальные переменные, используя функции API из библиотеки, которая предоставлена Lua.
Глобальные переменные в Lua не должны быть объявлены. Любая переменная считается глобальной, пока не объявлена явно как локальная. Перед первым назначением, значение глобальной переменной nil (это значение по умолчанию может быть изменено, подробности в разделе 8). Таблица используется, чтобы хранить все глобальные имена и значения (таблицы объясняются в разделе 3).
Модуль выполнения Lua назван составной частью. Это просто последовательность инструкций, которые выполнены последовательно. Каждая инструкция может факультативно сопровождаться точкой с запятой:
chunk ::= {stat [`;']}Инструкции описаны в разделе 4. Запись выше представляет собой обычный расширенный BNF, в котором {a} соответствует 0 или более объектов a [a] означает факультативный a, а (a)+ задает один или большее количество a.
Составная часть (chunk) может быть сохранена в файле или в строке в ведущей программе. Когда chunk выполняется, сначала проводится прекомпиляция в байт-код для реальной машины, а затем инструкции будут выполнены в последовательном порядке, моделируя действительную машину. Все модификации глобальной среды сохраняются после окончания работы кода.
Chunk также может быть прекомпилирован в двоичную форму и сохранен в файле. Текстовые файлы с кодом и их двоичные прекомпилированные формы взаимозаменяемы. Lua автоматически обнаруживает тип файла и действует соответственно.