在C#中嵌入Lua交互式提示窗口

时间:2011-04-29 23:57:11

标签: c# .net shell lua interactive

我尝试在C#App中提供一些脚本功能。    经过一些搜索后,Lua和LuaInterface看起来是一种合理的方式。    通过在我的C#代码中嵌入Lua VM,我可以加载Lua脚本和处理方法    在C#类中定义没有任何问题。

但是,我想知道有没有办法不仅执行lua脚本文件    我的c#程序,还有我的程序中的lua交互式提示符?    因此,我可以输入命令并立即查看返回。

任何关于我应该从哪里开始工作的提示都会非常有用!

最好的问候

1 个答案:

答案 0 :(得分:2)

Lua的debug模块包含一个非常基本的交互式控制台:debug.debug()(Lua手册建议this module should be used only for debugging)。

如果这不符合您的需求,那么您自己很容易实现。如果你要用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以了解如何完成此操作。