Ist es möglich, eine einzelne lua-Anweisung von einem Host-Programm aus auszuführen?

Ich versuche, ein Lua-basiertes Skriptsystem in meine Spiel-Engine einzubetten. Ich möchte, dass das Scripting sowohl blockierende als auch nicht blockierende Befehle enthalten kann, zum Beispiel:

character.walkTo(24, 359);  // Blocks until character arrives
c = 35; // Non blocking, execution goes on to the next statement

Da "walkTo" für mehr als 1 Ausführungsrahmen "aktiv" sein muss, möchte ich in der Lage sein, 1 Anweisung gleichzeitig vom Java-Host aus anstelle der gesamten Funktion auszuführen. Dies liegt daran, dass ein echtes Multithreading, das nicht benötigt wird, zu viel wäre.

Wenn ich nur eine Anweisung ausführen und den Ausführungsstatus bis zur nächsten Anweisungsausführung "pausiert" lassen könnte, könnte ich blockierende Befehle wie "walkTo" implementieren, indem ich überprüfe, ob der Befehl auf dem Host beendet ist und ob dies der Fall ist. Fahren Sie mit der nächsten Anweisung fort, andernfalls warten Sie bis zur nächsten Frame-Iteration.

Gibt es eine Möglichkeit, eine Anweisung des Java-Hosts mit LuaJ (oder einer anderen Lua-API) auszuführen, oder bin ich gezwungen, meine eigene Skript-Engine mit lex und yacc zu entwickeln?

Jede gute Idee ist willkommen, danke!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage