4

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)

しかし、1行のステートメントしか実行できません。私のバインドされた関数のようにmove()。しかし、関数やループなどの複数行のステートメントも使用したいと思います。テキスト エディタに以下が含まれている場合:

function test()
    return  "Hallo Welt"
end

最初の行だけが渡され、インタープリターに end ステートメントがないlua(line)ため、例外が発生します。function test()

私に何ができる?行が function,while... コマンドで始まるかどうかを確認し、終了ブロックをスキャンして文字列に追加して、この複数行のステートメントを一度に実行して強調表示できるようにする必要がありますか? これは可能でしょうか?どうすればいいですか?

助けてください。

4

2 に答える 2