The parent class of all AST objects that contain
other AST objects. Everything but the really
simple objects descend from this. It is important to note that Branch objects contain other AST objects only — if you want to contain
values, use a descendent of the AST::Leaf class.
Yield each contained AST node in turn. Used mostly by
‘evaluate’. This definition means that I don‘t have to
override ‘evaluate’ every time, but each child of Branch will likely need to override this method.