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_LIST_HPP) 11 #define BOOST_SPIRIT_LIST_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 // operator% is defined as: 26 // a % b ---> a >> *(b >> a) 27 // 28 /////////////////////////////////////////////////////////////////////////// 29 template <typename A, typename B> 30 sequence<A, kleene_star<sequence<B, A> > > 31 operator%(parser<A> const& a, parser<B> const& b); 32 33 template <typename A> 34 sequence<A, kleene_star<sequence<chlit<char>, A> > > 35 operator%(parser<A> const& a, char b); 36 37 template <typename B> 38 sequence<chlit<char>, kleene_star<sequence<B, chlit<char> > > > 39 operator%(char a, parser<B> const& b); 40 41 template <typename A> 42 sequence<A, kleene_star<sequence<strlit<char const*>, A> > > 43 operator%(parser<A> const& a, char const* b); 44 45 template <typename B> 46 sequence<strlit<char const*>, 47 kleene_star<sequence<B, strlit<char const*> > > > 48 operator%(char const* a, parser<B> const& b); 49 50 template <typename A> 51 sequence<A, kleene_star<sequence<chlit<wchar_t>, A> > > 52 operator%(parser<A> const& a, wchar_t b); 53 54 template <typename B> 55 sequence<chlit<wchar_t>, kleene_star<sequence<B, chlit<wchar_t> > > > 56 operator%(wchar_t a, parser<B> const& b); 57 58 template <typename A> 59 sequence<A, kleene_star<sequence<strlit<wchar_t const*>, A> > > 60 operator%(parser<A> const& a, wchar_t const* b); 61 62 template <typename B> 63 sequence<strlit<wchar_t const*>, 64 kleene_star<sequence<B, strlit<wchar_t const*> > > > 65 operator%(wchar_t const* a, parser<B> const& b); 66 67 BOOST_SPIRIT_CLASSIC_NAMESPACE_END 68 69 }} // namespace BOOST_SPIRIT_CLASSIC_NS 70 71 #endif 72 73 #include <boost/spirit/home/classic/core/composite/impl/list.ipp> 74