TC-3 Improvements

Possible improvements include:

Factoring the binding interface

In the ast module, several classes need to be changed to be “bindable”, i.e., to have new data and function members to set, store, and retrieve their associated definition. Instead of changing several classes in a very similar fashion, introduce a Bindable template class and derive from its instantiation.

Hash Tables

How about using true hash tables (aka “unordered associative containers” in Boost parlance) instead of trees? You might also want to try Google’s Sparse Hash Tables.

Escaping Variables Computation

Once you have completed TC-3, you might want to consider implementing the TC-E option, see TC-E, Computing the Escaping Variables.