Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- http://www.lua.org/gems/
-- http://www.lua.org/gems/selected.html

Title:  Boostraping a Forth in 40 lines of Lua code
Author: Eduardo Ochs
        http://angg.twu.net/
        eduardoochs@gmail.com
Text of the abstract:

  The core of a conventional Forth system is composed of two main
  programs: an _outer interpreter_, that interprets textual scripts,
  and an _inner interpreter_, that runs bytecodes; the outer
  interpreter switches between an ``immediate mode'', where words as
  executed as soon as they are read, and a ``compile mode'', where the
  words being read are assembled into bytecodes to define new words.

  In Forth all variables are accessible from all parts of the system.
  Several important words use that to affect the parsing: they read
  parts of the input text themselves, process that somehow, and
  advance the input pointer - and with that they effectively implement
  other languages, with arbitrary syntax, on top of the basic language
  of the outer interpreter.

  Due mostly to cultural reasons, Forths tend to be built starting
  from very low-level pieces: first the inner interpreter, in Assembly
  or C, then the basic libraries and the outer interpreter, in Forth
  bytecodes, or - rarely - in C. We take another approach. If we
  consider that Lua is more accessible to us than C or Assembly - and
  thus for us Lua is ``more basic'' - then it is more natural to start
  from the outer interpreter, and the dictionary only has to have the
  definition for one word, one that means ``interpret everything that
  follows, up to a given delimiter, as Lua code, and execute that''.
  An outer interpreter like that fits in less than 40 lines of Lua
  code, and it can be used to bootstrap a whole Forth-like language.