Boost logo

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