1
0
Fork 0
mirror of https://github.com/Reuh/anselme.git synced 2025-10-27 16:49:31 +00:00

Commit on script end

This commit is contained in:
Étienne Fildadut 2021-04-14 00:48:07 +02:00
parent 977aa5dadd
commit b7f38a16fd

View file

@ -14,6 +14,7 @@ local expression = require((...):gsub("anselme$", "parser.expression"))
local eval = require((...):gsub("anselme$", "interpreter.expression")) local eval = require((...):gsub("anselme$", "interpreter.expression"))
local run_line = require((...):gsub("anselme$", "interpreter.interpreter")).run_line local run_line = require((...):gsub("anselme$", "interpreter.interpreter")).run_line
local to_lua = require((...):gsub("anselme$", "interpreter.common")).to_lua local to_lua = require((...):gsub("anselme$", "interpreter.common")).to_lua
local flush_state = require((...):gsub("anselme$", "interpreter.common")).flush_state
local stdfuncs = require((...):gsub("anselme$", "stdlib.functions")) local stdfuncs = require((...):gsub("anselme$", "stdlib.functions"))
-- wrappers for love.filesystem / luafilesystem -- wrappers for love.filesystem / luafilesystem
@ -48,10 +49,13 @@ end
--- interpreter methods --- interpreter methods
local interpreter_methods = { local interpreter_methods = {
-- interpreter state
state = nil,
-- VM this interpreter belongs to -- VM this interpreter belongs to
vm = nil, vm = nil,
--- run the VM until the next event --- run the VM until the next event
-- will commit changed variables on successful script end
-- returns event, data; if event is "return" or "error", the interpreter must not be stepped further -- returns event, data; if event is "return" or "error", the interpreter must not be stepped further
step = function(self) step = function(self)
-- check status -- check status
@ -80,6 +84,7 @@ local interpreter_methods = {
local success, event, data = coroutine.resume(self.state.interpreter.coroutine) local success, event, data = coroutine.resume(self.state.interpreter.coroutine)
anselme.running = previous anselme.running = previous
if not success then return "error", event end if not success then return "error", event end
if event == "return" then flush_state(self.state) end
return event, data return event, data
end, end,