
On 03/24/08 15:40, Eric Niebler wrote: [snip]
not. I'm pretty sure the use of ::type is wrong. Let me see if I can put in words what an expression is, and what a grammar is, and what the relationship is between the two. Maybe you can combine this with your understanding of morphisms to formulate this.
An expression is one of: * expr<tag::terminal, args0<X> > ... [snip]
But isn't terminal<X> the same as expr<tag::terminal,args0<X> >? So, if terminal<X> is an expression (type), then the following: terminal<int> t_int={{1}}; should compile, but it doesn't. Instead, the ::type has to be appended to it. That's the reason for the ::type in the formula I gave in immediately previous post. I think what you're calling expression I'm calling expr_gram here: http://archives.free.net.ph/message/20080323.205859.65a40e5e.en.html