Now that we have introduced a full blown token map -- new as of just a few changes ago -- we can start using it for all of our symbol binding. This also addresses some order-dependent issues, like intra-module references looking up symbols that have been registered in the token map but not necessarily stored in the relevant parent symbols just yet. Plus, frankly, it's much simpler and uses a hashmap lookup instead of a fairly complex recursive tree walk. I've kept the tree walk case, however, to improve diagnostics upon failure. This allows us to tell developers, for example, that the reason a binding failed was due to a missing package. |
||
---|---|---|
.. | ||
binder.go | ||
compiler.go | ||
eval.go | ||
new.go |