|
Boost Users : |
Subject: [Boost-users] Parsing and evaluate boolean expression
From: Olivier Austina (olivier.austina_at_[hidden])
Date: 2013-10-13 04:20:42
Hi All,
I would like to parse and evaluate boolean expression such as (a=b and
c>9). I am following this example at
http://stackoverflow.com/questions/12598029/how-to-calculate-boolean-expression-in-spirit/12602418#12602418.
This is the code for parsing steps:
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/variant/recursive_wrapper.hpp>
#include <boost/lexical_cast.hpp>
namespace qi = boost::spirit::qi;
namespace phx = boost::phoenix;
struct op_or {};
struct op_and {};
struct op_not {};
struct op_equal{};
struct op_not_equal{};
struct op_less{};
struct op_less_equal{};
struct op_greater{};
struct op_greater_equal{};
typedef std::string var;
template <typename tag> struct binop;
template <typename tag> struct unop;
typedef boost::variant<var,
boost::recursive_wrapper<unop <op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> >
> expr;
template <typename tag> struct binop
{
explicit binop(const expr& l, const expr& r) : oper1(l), oper2(r) { }
expr oper1, oper2;
};
template <typename tag> struct unop
{
explicit unop(const expr& o) : oper1(o) {}
expr oper1;
};
template <typename It, typename Skipper = qi::space_type>
struct parser : qi::grammar<It, expr(), Skipper>
{
parser() : parser::base_type(expr_)
{
using namespace qi;
expr_ = boolExpr_.alias();
boolExpr_ = *((compExpr_ >> '|' >> compExpr_ ) [ _val =
phx::construct<binop<op_or > >(_1, _2) ]
|(compExpr_ >> '&' >> compExpr_ ) [ _val =
phx::construct<binop<op_and > >(_1, _2) ]
|(compExpr_ >> '!' >> compExpr_ ) [ _val =
phx::construct<binop<op_not > >(_1, _2) ]
);
compExpr_=((compExpr_ >> '=' >> compExpr_ ) [ _val =
phx::construct<binop<op_equal > >(_1, _2) ]
|(compExpr_ >> "!=" >> compExpr_ ) [ _val =
phx::construct<binop<op_not_equal > >(_1, _2) ]
|(compExpr_ >> '<' >> compExpr_ ) [ _val =
phx::construct<binop<op_less > >(_1, _2) ]
| (compExpr_ >> '<=' >> compExpr_ ) [ _val =
phx::construct<binop<op_less_equal> >(_1, _2) ]
| (compExpr_ >> '>' >> compExpr_ ) [ _val =
phx::construct<binop<op_greater> >(_1, _2) ]
| (compExpr_ >> ">=" >> compExpr_ ) [ _val =
phx::construct<binop<op_greater_equal> >(_1, _2) ]
|'(' >> boolExpr_>>')'
| varExpr_
);
varExpr_=qi::lexeme[ +(alpha|digit) ];
BOOST_SPIRIT_DEBUG_NODE(expr_);
BOOST_SPIRIT_DEBUG_NODE(boolExpr_);
BOOST_SPIRIT_DEBUG_NODE(compExpr_);
BOOST_SPIRIT_DEBUG_NODE(varExpr_);
// BOOST_SPIRIT_DEBUG_NODE(simple);
// BOOST_SPIRIT_DEBUG_NODE(var_);
}
private:
qi::rule<It, var() , Skipper> varExpr_;
qi::rule<It, expr(), Skipper> boolExpr_, compExpr_, expr_;
};
int main()
{
std::string inputs="a=b & c>9";
typedef std::string::const_iterator It;
It iter=inputs.begin(),end=inputs.end();
parser<It> p;
try
{
expr result;
bool ok = qi::phrase_parse(iter,end,p,qi::space,result);
if (!ok)
std::cerr << "invalid input\n";
else
{
std::cout << "result:\t" << result << "\n";
// std::cout << "evaluated:\t" << evaluate(result)
<< "\n";
}
} catch (const qi::expectation_failure<It>& e)
{
std::cerr << "expectation_failure at '" <<
std::string(e.first, e.last) << "'\n";
}
if (iter!=end) std::cerr << "unparsed: '" <<
std::string(iter,end) << "'\n";
return 0;
}
Before the parser instantiation, the compilation is ok. This is error.
Thank you for any suggestion:
c:\boost\boost_1_53_0\boost\spirit\home\qi\nonterminal\rule.hpp:176: erreur
: no matching function for call to
'assertion_failed(mpl_::failed************
(boost::spirit::qi::rule<Iterator, T1, T2, T3,
T4>::define(boost::spirit::qi::rule<Iterator, T1, T2, T3, T4>&, const
Expr&, mpl_::false_) [with Auto = mpl_::bool_<false>, Expr =
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_equal>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&, const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char (&)[3]>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_not_equal>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_less>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const int&>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_less_equal>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_greater>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char (&)[3]>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_greater_equal>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l>,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l> >, 2l>&>, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, std::basic_string<char>(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>, Iterator =
__gnu_cxx::__normal_iterator<const char*, std::basic_string<char> >, T1 =
boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(), T2 =
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, T3 =
boost::spirit::unused_type, T4 = boost::spirit::unused_type,
boost::spirit::qi::rule<Iterator, T1, T2, T3, T4> =
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>, mpl_::false_ =
mpl_::bool_<false>]::error_invalid_expression::************)(boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::bitwise_or,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_equal>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&, const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char (&)[3]>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_not_equal>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_less>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const int&>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_less_equal>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_greater>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::subscript,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const
char*, std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char (&)[3]>, 0l> >, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const
boost::phoenix::actor<boost::phoenix::composite<boost::phoenix::assign_eval,
boost::fusion::vector<boost::spirit::attribute<0>,
boost::phoenix::composite<boost::phoenix::detail::construct_eval<binop<op_greater_equal>
>, boost::fusion::vector<boost::spirit::argument<0>,
boost::spirit::argument<1>, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_> >,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_, boost::fusion::void_,
boost::fusion::void_, boost::fusion::void_> > >&>, 0l> >, 2l>&>, 2l>&,
const boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<const
boost::proto::exprns_::expr<boost::proto::tagns_::tag::shift_right,
boost::proto::argsns_::list2<boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l>,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, boost::variant<std::basic_string<char>,
boost::recursive_wrapper<unop<op_not> >,
boost::recursive_wrapper<binop<op_and> >,
boost::recursive_wrapper<binop<op_or> >,
boost::recursive_wrapper<binop<op_equal> >,
boost::recursive_wrapper<binop<op_not_equal> >,
boost::recursive_wrapper<binop<op_less> >,
boost::recursive_wrapper<binop<op_less_equal> >,
boost::recursive_wrapper<binop<op_greater> >,
boost::recursive_wrapper<binop<op_greater_equal> > >(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>&,
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<const char&>, 0l> >, 2l>&>, 2l>&,
boost::spirit::qi::rule<__gnu_cxx::__normal_iterator<const char*,
std::basic_string<char> >, std::basic_string<char>(),
boost::proto::exprns_::expr<boost::proto::tagns_::tag::terminal,
boost::proto::argsns_::term<boost::spirit::tag::char_code<boost::spirit::tag::space,
boost::spirit::char_encoding::standard> >, 0l>, boost::spirit::unused_type,
boost::spirit::unused_type>&>, 2l>))'
c:\boost\boost_1_53_0\boost\variant\detail\variant_io.hpp:64: erreur : no
match for 'operator<<' in '((const
boost::detail::variant::printer<std::basic_ostream<char>
>*)this)->boost::detail::variant::printer<std::basic_ostream<char> >::out_
<< operand'
c:\boost\boost_1_53_0\boost\variant\detail\variant_io.hpp:64: erreur : no
match for 'operator<<' in '((const
boost::detail::variant::printer<std::basic_ostream<char>
>*)this)->boost::detail::variant::printer<std::basic_ostream<char> >::out_
<< operand'
c:\boost\boost_1_53_0\boost\variant\detail\variant_io.hpp:64: erreur : no
match for 'operator<<' in '((const
boost::detail::variant::printer<std::basic_ostream<char>
>*)this)->boost::detail::variant::printer<std::basic_ostream<char> >::out_
<< operand'
c:\boost\boost_1_53_0\boost\variant\detail\variant_io.hpp:64: erreur : no
match for 'operator<<' in '((const
boost::detail::variant::printer<std::basic_ostream<char>
>*)this)->boost::detail::variant::printer<std::basic_ostream<char> >::out_
<< operand'
Regards
Olivier
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net