Fri May 29 17:47:55 CEST 2009
OK.. it doesn't work any more. somehwere something went wrong. i
just switched the Forth to use byte addresses for "address".
Let's try to debug it.
OK, it was storing byte addresses, but expecting word addresses.
Now, how to distinguish words from macros? This requires some
restructuring. The problem is trivial when using compilation tokens
but i have an inverted dependency somewhere..
Hmm.. i tried restarting 5 times.. There's a problem here since we're
using the same namespace. Try again..
The problem is this: my macros already have compilation semantics.
The distinction between word/maro is made in the dictionary
compilation process. Overriding this is asking for trouble: it's
essentially unhiding something that's already abstracted. There has
to be a simpler way to do this.
I removed pic18/rpn-macro-double.ss to start over.
There is already a mechanism for this, but it's also not composable:
the way forth-begin is defined in pic18.ss
Conclusion: the forth definition code is not re-entrant because it is
tied to the (macro) namespace: can't define Forth on top of Forth.
However, it is possible to hide this behind namespaces, but I'm not
sure if this is worth the trouble. It would get quite confusing too..
The only way to do this is to use nested namespaces..