我使用以下命令将 Lua 脚本添加到我的 C# 应用程序中动态Lua http://dynamiclua.codeplex.com/图书馆,它运作得很好。
我想实现您获取正在执行的当前行(就像在 Visual Studio 中一样)并突出显示它。
目前我正在这样做:
public static void RunLua(string LuaToExecute)
{
dynamic lua = new DynamicLua.DynamicLua();
string[] lua_s_split = LuaToExecute.Split('\n');
int counter = 0;
foreach (string line in lua_s_split)
{
// highlight current line in editor
HighlightLine(counter + 1);
//execute current line
lua(line);
counter++;
}
}
这与我的 Lua 代码配合得很好,比如
move(20, 19)
sleep(1000)
move(5, 19)
但我不能只执行一行语句。就像我的绑定函数move()
。但我也想使用多行语句,例如函数和循环。如果文本编辑器包含:
function test()
return "Hallo Welt"
end
The lua(line)
会引发异常,因为只有第一行function test()
已通过,但解释器缺少结束语句。
我能做些什么?我是否应该检查该行是否以函数、while... 命令开头,然后扫描结束块并将其添加到字符串中,以便我可以一次执行并突出显示该多行语句?这可能吗?我该怎么做呢?
请帮忙。
我想实现您获取正在执行的当前行(就像在 Visual Studio 中一样)并突出显示它。
不要通过一次向 Lua 提供一行脚本来实现此目的。运行整个脚本并让 Lua 在执行切换到新行时通过调试挂钩通知您:
Lua 编程:钩子 http://www.lua.org/pil/23.2.html
Lua手册:debug.sethook http://www.lua.org/manual/5.2/manual.html#pdf-debug.sethook
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)