Even though it is programming-language-related (but definitely not
about implementing Forth), you might be interested in
@InProceedings{ertl99ef,
author = "M. Anton Ertl",
title = "Is {Forth} Code Compact? {A} Case Study",
booktitle = "EuroForth'99 Conference Proceedings",
year = "1999",
address = "St. Petersburg, Russia",
URL = "
http://www.complang.tuwien.ac.at/papers/ertl99ef.ps.gz",
abstract = "Forth advocates often claim that Forth code is
smaller, faster, and requires less development time
than equivalent programs in other languages. This paper
investigates this claim by comparing a number of parser
generators written in various languages with respect to
source code size. The smallest parser generator (14
lines) in this comparison is written in Forth, and the
other Forth program is smaller than the others in its
class by a factor of 8 or more; however, the Forth
programs do not have all the features of their
counterparts. I took a closer look at Gray (in Forth)
and Coco/R (in Modula-2) and found that several Forth
features missing from Modula-2 give Gray more than a
factor of three advantage over Coco/R (even if the
other size differences were solely due to differences
in functionality): run-time code generation; access to
the parser and a simple, flexible syntax; and Forth's
dictionary.",
}
This paper mentions several of the techniques you ask about. I does
not give much detail, but if you want to learn more about that, you
can look at the source code of the program.
http://www.complang.tuwien.ac.at/forth/gray.zip
- anton