Sun Jan 28 12:00:00 GMT 2007


[ this used to be the blog header ]

Staapl consists of:

* Scat: a set of macros for PLT Scheme implementing a family of
  dynamically typed concatenative languages usable inside scheme code.

* Coma: a COmpositional MAcro language: an extension of the Scat
  language with data types representing target code, and a
  specification syntax to define target code pattern matching

* Control: Extension of the Coma language with Forth-style control
  primitives based on conditional and unconditional jumps, useful for
  low level programming.

* Comp: a compiler that instantiates Coma+Control macros to produce a
  code graph structure + performs a-posteriori optimizations.

* Asm: a straightforward multipass relaxation assembler with arbitrary
  expression evaluation in terms of target addresses and a high level
  opcode definition language.

* Forth: parsing extensions for representing classic Forth syntax +
  PLT scheme language layers.

* Pic18: uses the Purrr template specialized to the Microchip PIC18
  architecture, to implement a PLT Scheme #lang.

The idiomatic forth language and the ideas behind the peephole
optimizing compiler have remained fairly constant since the 1.x
version. The Forth dialect is implemented as a collection of macros:
functions which operate on a stack of assembly instructions, and a
stack of nested control structures.

The thing which changed throughout the versions is the use of better
(higher) abstractions to implement the basic ideas, and factor the
design into simpler components.

Note that this project is much more about functional programming and
PLT Scheme than about Forth. The Forth dialect is used mostly as a
practical macro assembler on top of the clean Coma
architecture. However, the end result is nice to play with PIC18
chips, and it is used for real-world stuff.