Dave Jenkins schrieb:
"Eric Niebler"
wrote in message news:4978F428.8080107@boost-consulting.com... A general equation solver will be challenging to write, but should be possible. You'll need to familiarize yourself with Proto grammars and transforms. Here is a toy example to get you started. Hope it helps.
Suppose you want to move a series of additions to the right hand side. For example, transforming "var_ + 1 + 3 = 2" into "var_ = 2 - 3 - 1".
Is there a general way to iterate the Solve() transform until all the plusses are consumed? Or do you need multiple calls to Solve(), e.g. "proto::display_expr( Solve()Solve()( var_ + 1 + 3 = 2 ) );"
Hi Dave,
this version of Solve
"struct Solve
: proto::or_<
// Solved:
proto::assign
{}; "
has the feature of calling itsel recursively. So writing "Solve()( var_ + 1 + 3 = 2 )" is enough to produce "var_ = 2-1-3". It takes me about 1 to 2 hour to figure this out. So i would say that proto is not difficult to learn and you really will gain more. The next step will be to extend the grammar with the feature of transforming such expression "1+2+var_+3=4" into this "var_=4-1-2-3". Cheers Kim Tang
Thanks, Dave Jenkins
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users