There are no base classes.
There are no implemented interfaces.
There are no attributes in this class.
DEBUG()
add_child(child)
add_def(name)
add_frees(names)
Process list of free vars from nested scope.
Returns a list of names that are either 1) declared global in the parent or 2) undefined in a top-level parent. In either case, the nested scope should treat them as globals.
add_global(name)
add_param(name)
add_use(name)
check_name(name)
Return scope of name.
The scope of a name could be LOCAL, GLOBAL, FREE, or CELL.
force_global(name)
Force name to be global in scope.
Some child of the current node had a free reference to name. When the child was processed, it was labelled a free variable. Now that all its enclosing scope have been processed, the name is known to be a global or builtin. So walk back down the child chain and set the name to be global rather than free.
Be careful to stop if a child does not think the name is free.
get_cell_vars()
get_children()
get_free_vars()
get_names()
handle_children()
mangle(name)