regex.h: Add/modify comments.
2014-03-15 Tim Shen <timshen91@gmail.com> * include/bits/regex.h: Add/modify comments. * include/bits/regex_compiler.h: Likewise. * include/bits/regex_executor.h: Likewise. * include/bits/regex_executor.tcc: Likewise. * include/bits/regex_scanner.h: Likewise. From-SVN: r208593
This commit is contained in:
parent
f1182dd22b
commit
ee54a3b318
|
@ -1,3 +1,11 @@
|
||||||
|
2014-03-15 Tim Shen <timshen91@gmail.com>
|
||||||
|
|
||||||
|
* include/bits/regex.h: Add/modify comments.
|
||||||
|
* include/bits/regex_compiler.h: Likewise.
|
||||||
|
* include/bits/regex_executor.h: Likewise.
|
||||||
|
* include/bits/regex_executor.tcc: Likewise.
|
||||||
|
* include/bits/regex_scanner.h: Likewise.
|
||||||
|
|
||||||
2014-03-14 Jonathan Wakely <jwakely@redhat.com>
|
2014-03-14 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
PR ipa/58721
|
PR ipa/58721
|
||||||
|
|
|
@ -78,7 +78,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Class regex_traits. Describes aspects of a regular expression.
|
* @brief Describes aspects of a regular expression.
|
||||||
*
|
*
|
||||||
* A regular expression traits class that satisfies the requirements of
|
* A regular expression traits class that satisfies the requirements of
|
||||||
* section [28.7].
|
* section [28.7].
|
||||||
|
@ -2098,8 +2098,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
// [7.11.3] Function template regex_search
|
// [7.11.3] Function template regex_search
|
||||||
/**
|
/**
|
||||||
* Searches for a regular expression within a range.
|
* Searches for a regular expression within a range.
|
||||||
* @param __first [IN] The start of the string to search.
|
* @param __s [IN] The start of the string to search.
|
||||||
* @param __last [IN] One-past-the-end of the string to search.
|
* @param __e [IN] One-past-the-end of the string to search.
|
||||||
* @param __m [OUT] The match results.
|
* @param __m [OUT] The match results.
|
||||||
* @param __re [IN] The regular expression to search for.
|
* @param __re [IN] The regular expression to search for.
|
||||||
* @param __flags [IN] Search policy flags.
|
* @param __flags [IN] Search policy flags.
|
||||||
|
|
|
@ -42,7 +42,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
template<typename, bool, bool>
|
template<typename, bool, bool>
|
||||||
struct _BracketMatcher;
|
struct _BracketMatcher;
|
||||||
|
|
||||||
/// Builds an NFA from an input iterator interval.
|
/**
|
||||||
|
* @brief Builds an NFA from an input iterator interval.
|
||||||
|
*
|
||||||
|
* The %_TraitsT type should fulfill requirements [28.3].
|
||||||
|
*/
|
||||||
template<typename _TraitsT>
|
template<typename _TraitsT>
|
||||||
class _Compiler
|
class _Compiler
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,6 +41,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Takes a regex and an input string in and
|
||||||
|
* do the matching.
|
||||||
|
*
|
||||||
|
* The %_Executor class has two modes: DFS mode and BFS mode, controlled
|
||||||
|
* by the template parameter %__dfs_mode.
|
||||||
|
*/
|
||||||
template<typename _BiIter, typename _Alloc, typename _TraitsT,
|
template<typename _BiIter, typename _Alloc, typename _TraitsT,
|
||||||
bool __dfs_mode>
|
bool __dfs_mode>
|
||||||
class _Executor
|
class _Executor
|
||||||
|
|
|
@ -72,7 +72,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
// TODO: This approach is exponentially slow for certain input.
|
// TODO: This approach is exponentially slow for certain input.
|
||||||
// Try to compile the NFA to a DFA.
|
// Try to compile the NFA to a DFA.
|
||||||
//
|
//
|
||||||
// Time complexity: o(match_length), O(2^(_M_nfa.size()))
|
// Time complexity: \Omega(match_length), O(2^(_M_nfa.size()))
|
||||||
// Space complexity: \theta(match_results.size() + match_length)
|
// Space complexity: \theta(match_results.size() + match_length)
|
||||||
//
|
//
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
|
@ -82,8 +82,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
// Russ Cox's article (http://swtch.com/~rsc/regexp/regexp1.html)
|
// Russ Cox's article (http://swtch.com/~rsc/regexp/regexp1.html)
|
||||||
// explained this algorithm clearly.
|
// explained this algorithm clearly.
|
||||||
//
|
//
|
||||||
// It first computes epsilon closure for every state that's still matching,
|
// It first computes epsilon closure (states that can be achieved without
|
||||||
// using the same DFS algorithm, but doesn't reenter states (set true in
|
// consuming characters) for every state that's still matching,
|
||||||
|
// using the same DFS algorithm, but doesn't re-enter states (find a true in
|
||||||
// _M_visited), nor follows _S_opcode_match.
|
// _M_visited), nor follows _S_opcode_match.
|
||||||
//
|
//
|
||||||
// Then apply DFS using every _S_opcode_match (in _M_match_queue) as the start
|
// Then apply DFS using every _S_opcode_match (in _M_match_queue) as the start
|
||||||
|
@ -92,9 +93,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
// It significantly reduces potential duplicate states, so has a better
|
// It significantly reduces potential duplicate states, so has a better
|
||||||
// upper bound; but it requires more overhead.
|
// upper bound; but it requires more overhead.
|
||||||
//
|
//
|
||||||
// Time complexity: o(match_length * match_results.size())
|
// Time complexity: \Omega(match_length * match_results.size())
|
||||||
// O(match_length * _M_nfa.size() * match_results.size())
|
// O(match_length * _M_nfa.size() * match_results.size())
|
||||||
// Space complexity: o(_M_nfa.size() + match_results.size())
|
// Space complexity: \Omega(_M_nfa.size() + match_results.size())
|
||||||
// O(_M_nfa.size() * match_results.size())
|
// O(_M_nfa.size() * match_results.size())
|
||||||
template<typename _BiIter, typename _Alloc, typename _TraitsT,
|
template<typename _BiIter, typename _Alloc, typename _TraitsT,
|
||||||
bool __dfs_mode>
|
bool __dfs_mode>
|
||||||
|
|
|
@ -188,7 +188,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief struct _Scanner. Scans an input range for regex tokens.
|
* @brief Scans an input range for regex tokens.
|
||||||
*
|
*
|
||||||
* The %_Scanner class interprets the regular expression pattern in
|
* The %_Scanner class interprets the regular expression pattern in
|
||||||
* the input range passed to its constructor as a sequence of parse
|
* the input range passed to its constructor as a sequence of parse
|
||||||
|
|
Loading…
Reference in New Issue