Fri May 16 16:18:48 CEST 2008

compiler state update

state is growing larger so pattern matching isn't the best way of
updating it. maybe best to use local mutation: copy the state on
entry + perform imperative update.

hmm.. that looks even more ugly due to long names and explicit get/set

this just needs to be factored.

ok, with some factoring (struct dict) it's all a bit more readable:
compilation generates a list of list of (word code) inside a dict
struct, which will be collected into a list of head words that have
the code fallthrough structure recorded.

next: the 'org' operations + fallthrough disconnect on jumps.