On 9/21/2010 10:19 AM, Roland Bock wrote: > On 09/21/2010 04:01 PM, Eric Niebler wrote: >> The answer is simple and logically consistent: make sure *every* valid >> expression in your domain (including lone terminals) is accounted for by >> your grammar. > > OK, it is sinking in, slowly :-) > > Maybe I missed the equivalent part in the documentation, but the list > given by Thomas would make a very good section. > >> 1) the operands must be in a compatible domain >> 2) the left hand operand and the right hand operand must match the >> grammar >> specified in the domain >> 3) the resulting expression must match the grammar specified in the >> domain.
Yes, agreed. Something like this should be in the docs. Would you mind filing a trac ticket (http://svn.boost.org) so this doesn't get lost? > Also, maybe as an illustrating example: > > This grammar > > proto::plus<proto::terminal<int>, proto::terminal<int> > > > used in a domain would not allow > > i + i; > > with i being an int-terminal. Yes, that also should be noted. > Thanks for all the answers! No problem. -- Eric Niebler BoostPro Computing http://www.boostpro.com _______________________________________________ proto mailing list firstname.lastname@example.org http://lists.boost.org/mailman/listinfo.cgi/proto