This class reduces a parse tree, given a scope of bound variables. If
an identifier is not found in the given scope, then the identifier is
bound to any constants registered with the expression parser. If any
subtrees of the parse tree become constant, they are evaluated and
replaced with leaf nodes containing the evaluated result.
Return a new parse tree resulting from the specialization of
the given parse tree. Every identifier reference is replaced
by constants according to the given scope. Constant subtrees
are replaced with constant leaf nodes. Exclude the given set
of names from being replaced. The given parse tree is not
destroyed in the process.