
On 02/27/2004 11:01 PM, Brian McNamara wrote: [snip] One thing I forgot to emphasize is that this design pattern seeks to, in essence, replace a tree<A>, with a tree<B> where A and B represent inheritance heirarchies. In addition, the instance of tree<A> transformed should remain untouched. For example,
On 02/28/2004 08:08 AM, Larry Evans wrote: the tree<A> in the regexp_first example is the regexp_tree_top and tree<B> is regexp_first_top. The whole idea is to perform passes over tree<A>, adding information (via attributes attached to nodes of tree<A> by a pointer (e.g. regexp_tree_top::my_subtype ) used by subsequent passes (regexp_nilable_top::my_nilable is used to calculate regexp_first_top::my_first), and then to remove the information when it's no longer needed. Hope that clarifies things.