2--! @
short Read Eval Print Loop
3--! @brief an interpreter to debuging the
game via stdio.
4--! @par Extended Backus-Naur Form
6--!
line =
exit | frame_skip | [frame_skip], variable, [
"=", value (* assignment *)];
7--! frame_skip = [digit],
"!" ;
8--! digit = { ? 0 - 9 ? }- ;
25 local frames,
line = line_src:match('(%d+)!(.*)')
29 frames,
line = line_src:match('(!)(.*)')
30 if frames and
line then
37 local variable, assignment =
line:match('(.*)=(.*)')
38 if variable and assignment then
39 return variable, assignment
47 if assign and
#assign > 0 then
48 script =
'return function(std, game, application)\n'..var..
'=('..assign..
')\n return ('..var..
')\nend'
49 elseif var and #var > 0 then
50 script =
'return function(std, game, application)\nreturn ('..var..
')\nend'
53 if script and #script > 0 then
54 local ok, output = pcall(function()
55 local func, err =
load(script)
64 return ok, tostring(output)
93 local ok,
line = pcall(io.read)
95 if not ok or
line == nil or
line == '?' then
101 frames = tonumber(frames)
107 io.stderr:write(output)
116 while index <= frames do
128if not
package.loaded['modulename'] then
local function file(self, file)
local function require(std, game, application)
local function loadgame(game_file)
safe load game
local function package(self, module_name, module, custom)
local function exit(self)
local function error(self, handler_func)
local application_default
local function line_skip_frames(line_src)
local function evaluate(var, assign, std, game, application)
local function line_assignment(line)
local function line(x1, y1, x2, y2)
local function draw(std, game)
local function init(std, game)
local function loop(std, game)
local function http(std, game)