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/
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
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>
19 namespace boost { namespace spirit {
21 BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
23 ///////////////////////////////////////////////////////////////////////////
25 // operator% is defined as:
26 // a % b ---> a >> *(b >> a)
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);
34 sequence<A, kleene_star<sequence<chlit<char>, A> > >
35 operator%(parser<A> const& a, char b);
38 sequence<chlit<char>, kleene_star<sequence<B, chlit<char> > > >
39 operator%(char a, parser<B> const& b);
42 sequence<A, kleene_star<sequence<strlit<char const*>, A> > >
43 operator%(parser<A> const& a, char const* b);
46 sequence<strlit<char const*>,
47 kleene_star<sequence<B, strlit<char const*> > > >
48 operator%(char const* a, parser<B> const& b);
51 sequence<A, kleene_star<sequence<chlit<wchar_t>, A> > >
52 operator%(parser<A> const& a, wchar_t b);
55 sequence<chlit<wchar_t>, kleene_star<sequence<B, chlit<wchar_t> > > >
56 operator%(wchar_t a, parser<B> const& b);
59 sequence<A, kleene_star<sequence<strlit<wchar_t const*>, A> > >
60 operator%(parser<A> const& a, wchar_t const* 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);
67 BOOST_SPIRIT_CLASSIC_NAMESPACE_END
69 }} // namespace BOOST_SPIRIT_CLASSIC_NS
73 #include <boost/spirit/home/classic/core/composite/impl/list.ipp>