1.4 - Автономный интерпретатор

Автономный интерпретатор (также называемый lua.c по имени файла исходного кода, или просто lua по исполняемому файлу) представляет собой небольшую программу, позволяющую прямое использование Lua. В данном резделе представлены его основные опции.

Когда интерпретатор загружает файл, он игнорирует первую строку, если она начинается со "знака числа" ("#"). Эта особенность позволяет использовать Lua как интерпретатор скриптов в Unix-системах. Если вы предваряете свой код строкой вида

    #!/usr/local/bin/lua
(при условии, что автономный интерпретатор расположен в /usr/local/bin), или
    #!/usr/bin/env lua,
то вы можете вызывать (исполнять) программу напрямую, без необходимости предварительно запускать интерпретатор Lua.

Запуск lua:

    lua [options] [script [args]]
Все параметры являются необязательными. Как мы уже видели, когда lua запускается без аргументов,интерпретатор переходит в интерактивный режим.

Ключ -e позволяет вводить код непосредственно в командную строку. Например,

    prompt> lua -e "print(math.sin(12))"   --> -0.53657291800043
(В системе Unix необходимо задавать двойные кавычки для разделения команд интерпретатора от собственно исполняемого кода.) Как было сказано выше, ключ -l загружает файл, а -i переводит интерпретатор в интерактивный режим после обработки других ключей (опций). Так, например, вызов
    prompt> lua -i -l a.lua -e "x = 10"
загрузит файл a.lua, затем выполнит присваивание x = 10, и, наконец, предоставит командную строку для ввода.

Всякий раз, когда глобальная переменная _PROMPT определена, lua использует это значение как вид приглашения в командной строке. Соответственно, вы можете изменить вид этого приглашения, использовав вызов, подобный следующему:

    prompt> lua -i -e "_PROMPT=' lua> '"
     lua>
Подразумевается, что "prompt" - приглашение командной строки ОС. В приведенном примере внешние кавычки разделяют команды интерпретатора и исполняемый код, а внутренние одинарные кавычки обрабатываются Lua. Строго говоря, Lua получает для исполнения строку:
    _PROMPT=' lua> '
которая присваивает строку " lua> " глобальной переменной _PROMPT.

Перед обработкой аргументов lua проверяет переменную окружения LUA_INIT. Если эта переменная определена и содержит @filename, lua загружает указанный файл. Если LUA_INIT определена, но начинается не с "@", lua проверяет содержимое на соответствие коду Lua и выполняет его. Эта переменная предоставляет большие возможности по настройке автономного интерпретатора, так как в вашем распоряжении оказывается вся мощь Lua в приложении к задачам конфигурации. Вы можете предварительно загрузить пакеты, изменить вид приглашения и путь, определить ваши собственные функции, переименовать или удалить функции и т.д.

Главный скрипт программы получает аргументы через глобальную переменную arg. В вызове вида

    prompt> lua script a b c
lua создает таблицу arg со всеми указанными в командной строке аргументами. Имя скрипта хранится в ячейке 0; его первый аргумент (a в примере) помещается в ячейку 1 и т.д. Возможны случаи передачи опций в ячейки с отрицательными индексами, что возможно при указании опций до имени скрипта. Например, в результате вызова
    prompt> lua -e "sin=math.sin" script a b
lua сохраняет аргументы в следующем виде:
    arg[-3] = "lua"
    arg[-2] = "-e"
    arg[-1] = "sin=math.sin"
    arg[0] = "script"
    arg[1] = "a"
    arg[2] = "b"
В большинстве случаев скрипт обрабатывает только положительные индексы (arg[1] и arg[2] в примере).


Hosted by uCoz