
On Saturday 14 July 2007 17:12, Eric Niebler wrote:
Yes, that's mostly correct. The types proto::shift_right and proto::unary_expr, for example, do a pass-through transform. Other types like proto::if_ and proto::expr have an identity transform. The docs describe the difference between these two, and which types have which transform.
Yep, I think I understand the difference.
Here S and V are the types of the state and visitor parameters that just come along for the ride. So, calling Grammar::call() doesn't recurse to the children in general *unless* Grammar is one of these special transforms like pass-through.
Yes, my (unstated) assumption was that Grammar was a pass-through transform. I'm about to tackle the n-ary case, which will be interesting. I'm sure I'll have more questions but armed with the help you've given, I've a much better shot now. Thanks. -Dave