Оценка Lua для проекта голого металла - PullRequest
2 голосов
/ 29 апреля 2020

Я оцениваю Lua для голого металлического проекта (большая часть которого уже запущена), и похоже, что нам нужно.

Мне нужно вставить его в мой код и иметь возможность звонить в Lua, не зависая там вообще. Мне нужно повторно вызывать Lua, как будто это конечный автомат, и он должен возвращать статус каждый раз, когда я вызываю его, чтобы сказать: «Продолжай звонить мне, я не закончил», «Стоп, у меня ошибка», или «Стоп, ошибок нет, сценарий завершен».

Я видел хуки, которые допускают обратный вызов от Lua до c для каждой строки или байта проверяемого байт-кода, но я не могу использовать обратный вызов.

Существует ли реализация конечного автомата Lua?

1 Ответ

0 голосов
/ 29 апреля 2020

Вам нужна функция lua_resume C, которая использует сопрограммы . Из документации:

lua_resume возвращает LUA_YIELD, если сопрограмма выдает, 0, если сопрограмма завершает свое выполнение без ошибок, или код ошибки в случае ошибок (см. Lua_pcall).

Это звучит для меня точно так, как вы описываете.

...