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 + -
显示快捷键?