Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
res = {}
re = function( res, name, def )
  if res[name] then return res[name] end
  res[name] = regex(def)
  return res[name]
end
re(res, "getline",   "^([^\n]*)(\n?)")
re(res, "getspaces", "^([^ \t]*)")
re(res, "getword",   "^[ \t]*([^ \t\n]*)")

program = {}
program.string = readfile(arg[1])
program.pos = 0

getword = function( )
  local _, mall, m1 = regmatch(res.getword, program.string, program.pos)
  program.pos = program.pos + strlen(mall)
  return m1
end  
getline = function( )
  local _, mall, m1, nl = regmatch(res.getline, program.string, program.pos)
  program.pos = program.pos + strlen(mall)
  if mall ~= "" then return m1 end
end
getuntilre = function( delimre )
  local offset, mdelim =
    regmatch(re(res, delimre, delimre), program.string, program.pos)
  local m1 = strsub(program.string, program.pos+1, program.pos+offset)
  program.pos = program.pos+offset+strlen(mdelim)
  return m1
end

dict = {}
dict[""] = function( ) getline() end
dict["lua-until"] = function( )
    dostring(getuntilre(getword()))
  end

while 1 do
  dict[getword()]()
end