1 /*============================================================================= 2 Copyright (c) 1998-2003 Joel de Guzman 3 Copyright (c) 2001 Daniel Nuffer 4 Copyright (c) 2002 Hartmut Kaiser 5 http://spirit.sourceforge.net/ 6 7 Distributed under the Boost Software License, Version 1.0. (See accompanying 8 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 =============================================================================*/ 10 #if !defined(BOOST_SPIRIT_SEQUENTIAL_AND_HPP) 11 #define BOOST_SPIRIT_SEQUENTIAL_AND_HPP 12 13 #include <boost/spirit/home/classic/namespace.hpp> 14 #include <boost/spirit/home/classic/core/parser.hpp> 15 #include <boost/spirit/home/classic/core/primitives/primitives.hpp> 16 #include <boost/spirit/home/classic/core/composite/composite.hpp> 17 #include <boost/spirit/home/classic/meta/as_parser.hpp> 18 19 namespace boost { namespace spirit { 20 21 BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN 22 23 /////////////////////////////////////////////////////////////////////////// 24 // 25 // sequential-and operators 26 // 27 // Handles expressions of the form: 28 // 29 // a && b 30 // 31 // Same as a >> b. 32 // 33 /////////////////////////////////////////////////////////////////////////// 34 template <typename A, typename B> 35 sequence<A, B> 36 operator&&(parser<A> const& a, parser<B> const& b); 37 38 template <typename A> 39 sequence<A, chlit<char> > 40 operator&&(parser<A> const& a, char b); 41 42 template <typename B> 43 sequence<chlit<char>, B> 44 operator&&(char a, parser<B> const& b); 45 46 template <typename A> 47 sequence<A, strlit<char const*> > 48 operator&&(parser<A> const& a, char const* b); 49 50 template <typename B> 51 sequence<strlit<char const*>, B> 52 operator&&(char const* a, parser<B> const& b); 53 54 template <typename A> 55 sequence<A, chlit<wchar_t> > 56 operator&&(parser<A> const& a, wchar_t b); 57 58 template <typename B> 59 sequence<chlit<wchar_t>, B> 60 operator&&(wchar_t a, parser<B> const& b); 61 62 template <typename A> 63 sequence<A, strlit<wchar_t const*> > 64 operator&&(parser<A> const& a, wchar_t const* b); 65 66 template <typename B> 67 sequence<strlit<wchar_t const*>, B> 68 operator&&(wchar_t const* a, parser<B> const& b); 69 70 BOOST_SPIRIT_CLASSIC_NAMESPACE_END 71 72 }} // namespace BOOST_SPIRIT_CLASSIC_NS 73 74 #endif 75 76 #include <boost/spirit/home/classic/core/composite/impl/sequential_and.ipp> 77