parser_names.hpp 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254
  1. /*=============================================================================
  2. Copyright (c) 2001-2003 Joel de Guzman
  3. Copyright (c) 2002-2003 Hartmut Kaiser
  4. http://spirit.sourceforge.net/
  5. Distributed under the Boost Software License, Version 1.0. (See accompanying
  6. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  7. =============================================================================*/
  8. #if !defined(BOOST_SPIRIT_PARSER_NAMES_HPP)
  9. #define BOOST_SPIRIT_PARSER_NAMES_HPP
  10. #if defined(BOOST_SPIRIT_DEBUG)
  11. //////////////////////////////////
  12. #include <boost/spirit/home/classic/namespace.hpp>
  13. #include <boost/spirit/home/classic/core.hpp>
  14. namespace boost { namespace spirit {
  15. BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
  16. ///////////////////////////////////////////////////////////////////////////////
  17. //
  18. // Declaration of helper functions, which return the name of a concrete
  19. // parser instance. The functions are specialized on the parser types. The
  20. // functions declared in this file are for the predefined parser types from
  21. // the Spirit core library only, so additional functions might be provided as
  22. // needed.
  23. //
  24. ///////////////////////////////////////////////////////////////////////////////
  25. ///////////////////////////////////////////////////////////////////////////////
  26. // from actions.hpp
  27. template <typename ParserT, typename ActionT>
  28. std::string
  29. parser_name(action<ParserT, ActionT> const& p);
  30. ///////////////////////////////////////////////////////////////////////////////
  31. // from directives.hpp
  32. template <typename ParserT>
  33. std::string
  34. parser_name(contiguous<ParserT> const& p);
  35. template <typename ParserT>
  36. std::string
  37. parser_name(inhibit_case<ParserT> const& p);
  38. template <typename A, typename B>
  39. std::string
  40. parser_name(longest_alternative<A, B> const& p);
  41. template <typename A, typename B>
  42. std::string
  43. parser_name(shortest_alternative<A, B> const& p);
  44. ///////////////////////////////////////////////////////////////////////////////
  45. // from grammar.hpp
  46. template <typename DerivedT, typename ContextT>
  47. std::string
  48. parser_name(grammar<DerivedT, ContextT> const& p);
  49. ///////////////////////////////////////////////////////////////////////////////
  50. // from numerics.hpp
  51. template <typename T, int Radix, unsigned MinDigits, int MaxDigits>
  52. std::string
  53. parser_name(uint_parser<T, Radix, MinDigits, MaxDigits> const& p);
  54. template <typename T, int Radix, unsigned MinDigits, int MaxDigits>
  55. std::string
  56. parser_name(int_parser<T, Radix, MinDigits, MaxDigits> const& p);
  57. template <typename T, typename RealPoliciesT>
  58. std::string
  59. parser_name(real_parser<T, RealPoliciesT> const& p);
  60. ///////////////////////////////////////////////////////////////////////////////
  61. // from operators.hpp
  62. template <typename A, typename B>
  63. std::string
  64. parser_name(sequence<A, B> const& p);
  65. template <typename A, typename B>
  66. std::string
  67. parser_name(sequential_or<A, B> const& p);
  68. template <typename A, typename B>
  69. std::string
  70. parser_name(alternative<A, B> const& p);
  71. template <typename A, typename B>
  72. std::string
  73. parser_name(intersection<A, B> const& p);
  74. template <typename A, typename B>
  75. std::string
  76. parser_name(difference<A, B> const& p);
  77. template <typename A, typename B>
  78. std::string
  79. parser_name(exclusive_or<A, B> const& p);
  80. template <typename S>
  81. std::string
  82. parser_name(optional<S> const& p);
  83. template <typename S>
  84. std::string
  85. parser_name(kleene_star<S> const& p);
  86. template <typename S>
  87. std::string
  88. parser_name(positive<S> const& p);
  89. ///////////////////////////////////////////////////////////////////////////////
  90. // from parser.hpp
  91. template <typename DerivedT>
  92. std::string
  93. parser_name(parser<DerivedT> const& p);
  94. ///////////////////////////////////////////////////////////////////////////////
  95. // from primitives.hpp
  96. template <typename DerivedT>
  97. std::string
  98. parser_name(char_parser<DerivedT> const &p);
  99. template <typename CharT>
  100. std::string
  101. parser_name(chlit<CharT> const &p);
  102. template <typename CharT>
  103. std::string
  104. parser_name(range<CharT> const &p);
  105. template <typename IteratorT>
  106. std::string
  107. parser_name(chseq<IteratorT> const &p);
  108. template <typename IteratorT>
  109. std::string
  110. parser_name(strlit<IteratorT> const &p);
  111. std::string
  112. parser_name(nothing_parser const &p);
  113. std::string
  114. parser_name(epsilon_parser const &p);
  115. std::string
  116. parser_name(anychar_parser const &p);
  117. std::string
  118. parser_name(alnum_parser const &p);
  119. std::string
  120. parser_name(alpha_parser const &p);
  121. std::string
  122. parser_name(cntrl_parser const &p);
  123. std::string
  124. parser_name(digit_parser const &p);
  125. std::string
  126. parser_name(graph_parser const &p);
  127. std::string
  128. parser_name(lower_parser const &p);
  129. std::string
  130. parser_name(print_parser const &p);
  131. std::string
  132. parser_name(punct_parser const &p);
  133. std::string
  134. parser_name(blank_parser const &p);
  135. std::string
  136. parser_name(space_parser const &p);
  137. std::string
  138. parser_name(upper_parser const &p);
  139. std::string
  140. parser_name(xdigit_parser const &p);
  141. std::string
  142. parser_name(eol_parser const &p);
  143. std::string
  144. parser_name(end_parser const &p);
  145. ///////////////////////////////////////////////////////////////////////////////
  146. // from rule.hpp
  147. template<typename T0, typename T1, typename T2>
  148. std::string
  149. parser_name(rule<T0, T1, T2> const& p);
  150. ///////////////////////////////////////////////////////////////////////////////
  151. // from subrule.hpp
  152. template <typename FirstT, typename RestT>
  153. std::string
  154. parser_name(subrule_list<FirstT, RestT> const &p);
  155. template <int ID, typename DefT, typename ContextT>
  156. std::string
  157. parser_name(subrule_parser<ID, DefT, ContextT> const &p);
  158. template <int ID, typename ContextT>
  159. std::string
  160. parser_name(subrule<ID, ContextT> const &p);
  161. ///////////////////////////////////////////////////////////////////////////////
  162. // from chset.hpp
  163. ///////////////////////////////////////////////////////////////////////////////
  164. //
  165. // Decide, if a node is to be traced or not
  166. //
  167. ///////////////////////////////////////////////////////////////////////////////
  168. template<
  169. typename DerivedT, typename EmbedT,
  170. typename T0, typename T1, typename T2
  171. >
  172. bool
  173. trace_parser(impl::rule_base<DerivedT, EmbedT, T0, T1, T2>
  174. const& p);
  175. template <typename DerivedT, typename ContextT>
  176. bool
  177. trace_parser(grammar<DerivedT, ContextT> const& p);
  178. template <int ID, typename ContextT>
  179. bool
  180. trace_parser(subrule<ID, ContextT> const& p);
  181. template <typename ParserT, typename ActorTupleT>
  182. struct init_closure_parser;
  183. template <typename ParserT, typename ActorTupleT>
  184. bool
  185. trace_parser(init_closure_parser<ParserT, ActorTupleT> const& p);
  186. ///////////////////////////////////////////////////////////////////////////////
  187. BOOST_SPIRIT_CLASSIC_NAMESPACE_END
  188. }} // namespace BOOST_SPIRIT_CLASSIC_NS
  189. //////////////////////////////////
  190. #include <boost/spirit/home/classic/debug/impl/parser_names.ipp>
  191. #endif // defined(BOOST_SPIRIT_DEBUG)
  192. #endif // !defined(BOOST_SPIRIT_PARSER_NAMES_HPP)