Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- An implementation of "textual" colon words (more like macros) for
-- miniforth. This is truly minimal, and will work on a system that
-- doesn't even dream of having bytecodes.

-- (find-miniforthfile "cube1.mflua")

dstack = {}
rstack = {program}
dpush = function( val )  tinsert(dstack, 1, val) end
dpop  = function( )      return tremove(dstack, 1) end
rpush = function( prog ) tinsert(rstack, 1, prog); program = prog end
rpop  = function( )      tremove(rstack, 1); program = rstack[1] end

dict[""] = function( )
    getline()
    if program.pos == strlen(program.string) then
      return program.EOP, rpop()
    end
  end
mfpush = function( code ) rpush({string=code, pos=0}) end
mf = function( code )				-- run code now, then return
  rpush({string=code, pos=0, EOP="break"})
  mainloop()
end
mainloop = function( ) while dict[getword()]() ~= "break" do end end

re(res, ";;", "[ \t\n];;([ \t\n]|$)")
dict["::"] = function( )
    local word, code = getword(), getuntilre(";;")
    dict[word] = function( ) mfpush(%code) end
  end


-- A cousin of "::" that treats its body as Lua code. It doesn't have
-- anything to do with the textual colon words, but it's definition is
-- very similar to "::".
dict["::lua"] = function()
    local word, code = getword(), getuntilre(";;")
    dict[word] = dostring(format("return function() %s\nend", code))
  end