9
3

list.hpp 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. Distributed under the Boost Software License, Version 1.0. (See accompanying
  7. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  8. =============================================================================*/
  9. #if !defined(BOOST_SPIRIT_LIST_HPP)
  10. #define BOOST_SPIRIT_LIST_HPP
  11. #include <boost/spirit/home/classic/namespace.hpp>
  12. #include <boost/spirit/home/classic/core/parser.hpp>
  13. #include <boost/spirit/home/classic/core/primitives/primitives.hpp>
  14. #include <boost/spirit/home/classic/core/composite/composite.hpp>
  15. #include <boost/spirit/home/classic/meta/as_parser.hpp>
  16. namespace boost { namespace spirit {
  17. BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
  18. ///////////////////////////////////////////////////////////////////////////
  19. //
  20. // operator% is defined as:
  21. // a % b ---> a >> *(b >> a)
  22. //
  23. ///////////////////////////////////////////////////////////////////////////
  24. template <typename A, typename B>
  25. sequence<A, kleene_star<sequence<B, A> > >
  26. operator%(parser<A> const& a, parser<B> const& b);
  27. template <typename A>
  28. sequence<A, kleene_star<sequence<chlit<char>, A> > >
  29. operator%(parser<A> const& a, char b);
  30. template <typename B>
  31. sequence<chlit<char>, kleene_star<sequence<B, chlit<char> > > >
  32. operator%(char a, parser<B> const& b);
  33. template <typename A>
  34. sequence<A, kleene_star<sequence<strlit<char const*>, A> > >
  35. operator%(parser<A> const& a, char const* b);
  36. template <typename B>
  37. sequence<strlit<char const*>,
  38. kleene_star<sequence<B, strlit<char const*> > > >
  39. operator%(char const* a, parser<B> const& b);
  40. template <typename A>
  41. sequence<A, kleene_star<sequence<chlit<wchar_t>, A> > >
  42. operator%(parser<A> const& a, wchar_t b);
  43. template <typename B>
  44. sequence<chlit<wchar_t>, kleene_star<sequence<B, chlit<wchar_t> > > >
  45. operator%(wchar_t a, parser<B> const& b);
  46. template <typename A>
  47. sequence<A, kleene_star<sequence<strlit<wchar_t const*>, A> > >
  48. operator%(parser<A> const& a, wchar_t const* b);
  49. template <typename B>
  50. sequence<strlit<wchar_t const*>,
  51. kleene_star<sequence<B, strlit<wchar_t const*> > > >
  52. operator%(wchar_t const* a, parser<B> const& b);
  53. BOOST_SPIRIT_CLASSIC_NAMESPACE_END
  54. }} // namespace BOOST_SPIRIT_CLASSIC_NS
  55. #endif
  56. #include <boost/spirit/home/classic/core/composite/impl/list.ipp>