続きです。
REPLとは
こちらの記事を参照してください。
Luaで実装する
main.lua
function main()
local prompt = ""
local event = ""
while true do
io.write("lua> ")
prompt = io.read()
if prompt == nil or prompt == "exit" then
print("Bye!")
break
end
-- eval(prompt)
print(prompt)
end
end
function eval(prompt)
local func, err = load("return " .. prompt)
if not func then
print("Error: " .. err)
else
local ok, result = pcall(func)
if ok then
print(result)
else
print("Error: " .. result)
end
end
end
main()
実行する
$ lua main.lua
lua> 1 + 1
1 + 1
lua> foobar
foobar
lua> baz
baz
lua> exit
Bye!
ctrl-dのeofはprompt == nil
で受けています。
evalはないっぽいので、少しごちゃごちゃ書いています。