Модуль Lua debug
содержит очень простую интерактивную консоль: debug.debug()
(руководство Lua предлагает , этот модуль следует использовать только для отладки ).
Если это не отвечает вашим потребностям, достаточно легко реализовать его самостоятельно. Если бы вы написали это на самом Lua, абсолютная пустая консоль была бы такой:
while true do
io.write("> ")
loadstring(io.read())()
end
Это приведет к ошибке синтаксиса или времени выполнения. Чуть менее минимальная версия, которая фиксирует (и игнорирует) ошибки:
while true do
io.write("> ")
local line = io.read()
if not line then break end -- quit on EOF?
local chunk = loadstring(line)
if chunk then
pcall(chunk)
end
end
Это может быть улучшено путем отображения синтаксических ошибок (второе возвращаемое значение из loadstring
при ошибке), ошибок времени выполнения (второе возвращаемое значение из pcall
при ошибке), возвращаемых значений из оцененного кода ([2..N] возврат значения от pcall
в случае успеха) и т. д.
Если вы хотите, чтобы действительно выглядело модно, вы можете разрешить людям вводить многострочные операторы. Посмотрите на src/lua.c
в исходном дистрибутиве, чтобы увидеть, как это делается.