Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- miniforth3.lua - 2007jun04, Edrx
-- For Lua-5.1 (because of string.match)
-- This includes the blogme3 core, that will eventually be moved out
-- http://angg.twu.net/miniforth/miniforth3.lua.html
-- http://angg.twu.net/miniforth/miniforth3.abs.txt.html

eval = function (str) return assert(loadstring(str))() end

-- pat is a pattern with one "real" capture
-- and then an empty capture
parsebypattern = function (pat)
    local capture, newpos = string.match(subj, pat, pos)
    if newpos then pos = newpos; return capture end
  end

parsespaces     = function () return parsebypattern("^([ \t]*)()") end
parseword       = function () return parsebypattern("^([^ \t\n]+)()") end
parsenewline    = function () return parsebypattern("^(\n)()") end
parserestofline = function () return parsebypattern("^([^\n]*)()") end

getword          = function () parsespaces(); return parseword() end
getwordornewline = function ()
    parsespaces()
    return parseword() or parsenewline()
  end

state  = "interpret"
states = {}
states.interpret = function ()
    word = getwordornewline()
    if word == nil then state = "stop"; return end
    semantics = _F[word]
    if type(semantics) == "function" then semantics(); return end
  end

* (eepitch-lua51)
A = {}
= A[nil]

while state ~= "stop" do printstate(); states[state]() end


_F = {}
_F["%L"] = function () eval(parserestofline()) end
_F["\n"] = function () end

outer = function ()
    word = getwordornewline()
    if not word then return nil end       -- EOF -> word=nil -> break
    if _F[word] then _F[word](); return true end
    error(string.format("Unrecognized word: %q", word))
  end
outerloop = function () if outer() then outerloop() end end

readfile = function (fname)
    local f = assert(io.open(fname, "r"))
    local fcontents = f:read("*a"); f:close(); return fcontents
  end
setsubjto = function (str) subj = str; pos = 1 end
runstring = function (str) setsubjto(str); outerloop() end
runfile   = function (fname) runstring(readfile(fname)) end
-- runfile(arg[1])

-- (find-blogmefile "")
-- (find-blogmefile "blogme2-middle.lua")

-- (find-luamanualw3m "#pdf-string.match")
-- ee = function () runfile(ee_expand("$EEVTMPDIR/ee.mf3")) end

--]=]