[<<][staapl][>>][..]
Fri Mar 30 15:01:41 EDT 2007
compiler structure
so.. basicly, a compiler/assembler/whatever has the following
'natural' structure:
T = target language
S = source language
C = compiler language
it's best to separate the S -> T map into:
primitive macros S -> T (small)
composite macros S -> S (big)
you want to write both S -> T and S -> S maps in C. the reason you
want an S -> S map is because it contains higher level code than a S
-> T map.
one pitfall is to shield functionality in C by not properly mixing in
the T name space. the most straightforward way to implement both maps
is quasiquoting: quoted S or T and unquoted C. including the compiler
language is more precise:
primitive: C,S -> T
composite: C,S -> S
badnop is already organized this way: the primitives are peephole
optimizing pattern matchers, where C is scheme. writers and state
modifierd are composite, with C being cat. and the recursive macros
are a cleaner S -> S map, with C empty.
[Reply][About][<<][staapl][>>][..]