![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /proc/self/root/usr/include/boost/spirit/home/classic/utility/impl/ |
Upload File : |
/*============================================================================= Copyright (c) 2002-2003 Hartmut Kaiser http://spirit.sourceforge.net/ Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #ifndef BOOST_SPIRIT_REGEX_IPP #define BOOST_SPIRIT_REGEX_IPP /////////////////////////////////////////////////////////////////////////////// #include <boost/spirit/home/classic/core/primitives/impl/primitives.ipp> /////////////////////////////////////////////////////////////////////////////// namespace boost { namespace spirit { BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN namespace impl { /////////////////////////////////////////////////////////////////////////////// // inline const char* rx_prefix(char) { return "\\A"; } inline const wchar_t* rx_prefix(wchar_t) { return L"\\A"; } /////////////////////////////////////////////////////////////////////////////// // // rx_parser class // /////////////////////////////////////////////////////////////////////////////// template <typename CharT = char> class rx_parser : public parser<rx_parser<CharT> > { public: typedef std::basic_string<CharT> string_t; typedef rx_parser<CharT> self_t; rx_parser(CharT const *first, CharT const *last) { rxstr = string_t(rx_prefix(CharT())) + string_t(first, last); } rx_parser(CharT const *first) { rxstr = string_t(rx_prefix(CharT())) + string_t(first, impl::get_last(first)); } template <typename ScannerT> typename parser_result<self_t, ScannerT>::type parse(ScannerT const& scan) const { boost::match_results<typename ScannerT::iterator_t> what; boost::regex_search(scan.first, scan.last, what, rxstr, boost::match_default); if (!what[0].matched) return scan.no_match(); scan.first = what[0].second; return scan.create_match(what[0].length(), nil_t(), what[0].first, scan.first); } private: #if BOOST_VERSION >= 013300 boost::basic_regex<CharT> rxstr; // regular expression to match #else boost::reg_expression<CharT> rxstr; // regular expression to match #endif }; } // namespace impl /////////////////////////////////////////////////////////////////////////////// BOOST_SPIRIT_CLASSIC_NAMESPACE_END }} // namespace boost::spirit #endif // BOOST_SPIRIT_REGEX_IPP