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

C# 在C语言中嵌入Lua交互式提示窗口#,c#,.net,shell,lua,interactive,C#,.net,Shell,Lua,Interactive,我试图在我的C#应用程序中提供一些脚本功能。 经过一些搜索,Lua和LuaInterface看起来是一种合理的方法。 通过在我的C#代码中嵌入一个Lua VM,我可以加载Lua脚本和处理方法 在C#类中定义,没有任何问题 然而,我想知道是否有一种方法不仅可以在中执行lua脚本文件 我的c#程序,但也有一个lua互动提示在我的程序? 因此,我可以键入命令并立即看到返回 任何关于我应该从哪里开始工作的提示都将非常有用 向您致意Lua的debug模块包含一个非常基本的交互式控制台:debug.debu

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

然而,我想知道是否有一种方法不仅可以在中执行lua脚本文件 我的c#程序,但也有一个lua互动提示在我的程序? 因此,我可以键入命令并立即看到返回

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


向您致意

Lua的
debug
模块包含一个非常基本的交互式控制台:
debug.debug()
(Lua手册建议)

如果这不能满足您的需求,那么您可以很容易地自己实现一个。如果您要用Lua本身编写它,那么绝对简单的控制台将是:

while true do
   io.write("> ")
   loadstring(io.read())()
end
这将在语法或运行时错误时崩溃。略低于最低版本,捕获(并忽略)错误:

这可以通过显示语法错误(失败时
loadstring
的第二个返回值)、运行时错误(失败时
pcall
的第二个返回值)、评估代码的返回值(成功时
pcall
的[2..N]返回值)等来增强


如果你想变得更花哨,你可以允许人们输入多行语句。查看源发行版中的
src/lua.c
以了解这是如何完成的。

不使用
debug
模块中的任何内容进行调试是个坏主意。我建议从这个答案中删除第一段。OP没有说他想要这个控制台做什么。这很可能是为了调试,在这种情况下,信息是有用的。免责声明比删除更合适。我现在要补充一点。
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