我使用DynamicLua库将 Lua 脚本添加到我的 C# 应用程序中,它运行良好。我想实现您获取正在执行的当前行(如在 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
将lua(line)
引发异常,因为仅function test()
传递了第一行并且解释器缺少 end 语句。
我能做些什么?我是否应该检查该行是否以函数开头,while... 命令,然后扫描结束块并将其添加到字符串中,以便我可以一次执行并突出显示该多行语句?这可能吗?我该怎么做?
请帮忙。