primitives.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 655 行 · 第 1/2 页
HPP
655 行
{ return nothing_p; } /////////////////////////////////////////////////////////////////////////// // // alnum_parser class // /////////////////////////////////////////////////////////////////////////// struct alnum_parser : public char_parser<alnum_parser> { typedef alnum_parser self_t; alnum_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::isalnum_(ch); } }; alnum_parser const alnum_p = alnum_parser(); /////////////////////////////////////////////////////////////////////////// // // alpha_parser class // /////////////////////////////////////////////////////////////////////////// struct alpha_parser : public char_parser<alpha_parser> { typedef alpha_parser self_t; alpha_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::isalpha_(ch); } }; alpha_parser const alpha_p = alpha_parser(); /////////////////////////////////////////////////////////////////////////// // // cntrl_parser class // /////////////////////////////////////////////////////////////////////////// struct cntrl_parser : public char_parser<cntrl_parser> { typedef cntrl_parser self_t; cntrl_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::iscntrl_(ch); } }; cntrl_parser const cntrl_p = cntrl_parser(); /////////////////////////////////////////////////////////////////////////// // // digit_parser class // /////////////////////////////////////////////////////////////////////////// struct digit_parser : public char_parser<digit_parser> { typedef digit_parser self_t; digit_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::isdigit_(ch); } }; digit_parser const digit_p = digit_parser(); /////////////////////////////////////////////////////////////////////////// // // graph_parser class // /////////////////////////////////////////////////////////////////////////// struct graph_parser : public char_parser<graph_parser> { typedef graph_parser self_t; graph_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::isgraph_(ch); } }; graph_parser const graph_p = graph_parser(); /////////////////////////////////////////////////////////////////////////// // // lower_parser class // /////////////////////////////////////////////////////////////////////////// struct lower_parser : public char_parser<lower_parser> { typedef lower_parser self_t; lower_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::islower_(ch); } }; lower_parser const lower_p = lower_parser(); /////////////////////////////////////////////////////////////////////////// // // print_parser class // /////////////////////////////////////////////////////////////////////////// struct print_parser : public char_parser<print_parser> { typedef print_parser self_t; print_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::isprint_(ch); } }; print_parser const print_p = print_parser(); /////////////////////////////////////////////////////////////////////////// // // punct_parser class // /////////////////////////////////////////////////////////////////////////// struct punct_parser : public char_parser<punct_parser> { typedef punct_parser self_t; punct_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::ispunct_(ch); } }; punct_parser const punct_p = punct_parser(); /////////////////////////////////////////////////////////////////////////// // // blank_parser class // /////////////////////////////////////////////////////////////////////////// struct blank_parser : public char_parser<blank_parser> { typedef blank_parser self_t; blank_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::isblank_(ch); } }; blank_parser const blank_p = blank_parser(); /////////////////////////////////////////////////////////////////////////// // // space_parser class // /////////////////////////////////////////////////////////////////////////// struct space_parser : public char_parser<space_parser> { typedef space_parser self_t; space_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::isspace_(ch); } }; space_parser const space_p = space_parser(); /////////////////////////////////////////////////////////////////////////// // // upper_parser class // /////////////////////////////////////////////////////////////////////////// struct upper_parser : public char_parser<upper_parser> { typedef upper_parser self_t; upper_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::isupper_(ch); } }; upper_parser const upper_p = upper_parser(); /////////////////////////////////////////////////////////////////////////// // // xdigit_parser class // /////////////////////////////////////////////////////////////////////////// struct xdigit_parser : public char_parser<xdigit_parser> { typedef xdigit_parser self_t; xdigit_parser() {} template <typename CharT> bool test(CharT ch) const { return impl::isxdigit_(ch); } }; xdigit_parser const xdigit_p = xdigit_parser(); /////////////////////////////////////////////////////////////////////////// // // eol_parser class (contributed by Martin Wille) // /////////////////////////////////////////////////////////////////////////// struct eol_parser : public parser<eol_parser> { typedef eol_parser self_t; eol_parser() {} template <typename ScannerT> typename parser_result<self_t, ScannerT>::type parse(ScannerT const& scan) const { typename ScannerT::iterator_t save = scan.first; std::size_t len = 0; if (!scan.at_end() && *scan == '\r') // CR { ++scan.first; ++len; } // Don't call skipper here if (scan.first != scan.last && *scan == '\n') // LF { ++scan.first; ++len; } if (len) return scan.create_match(len, nil_t(), save, scan.first); return scan.no_match(); } }; eol_parser const eol_p = eol_parser(); /////////////////////////////////////////////////////////////////////////// // // end_parser class (suggested by Markus Schoepflin) // /////////////////////////////////////////////////////////////////////////// struct end_parser : public parser<end_parser> { typedef end_parser self_t; end_parser() {} template <typename ScannerT> typename parser_result<self_t, ScannerT>::type parse(ScannerT const& scan) const { if (scan.at_end()) return scan.empty_match(); return scan.no_match(); } }; end_parser const end_p = end_parser(); /////////////////////////////////////////////////////////////////////////// // // the pizza_p parser :-) // /////////////////////////////////////////////////////////////////////////// inline strlit<char const*> const pizza_p(char const* your_favorite_pizza) { return your_favorite_pizza; }BOOST_SPIRIT_CLASSIC_NAMESPACE_END}} // namespace BOOST_SPIRIT_CLASSIC_NS#ifdef BOOST_MSVC#pragma warning (pop)#endif#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?