diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 276e7cf250f..c0b40d79229 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2014-03-15 Tim Shen + + * 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 PR ipa/58721 diff --git a/libstdc++-v3/include/bits/regex.h b/libstdc++-v3/include/bits/regex.h index 816f5cfb004..e556350adca 100644 --- a/libstdc++-v3/include/bits/regex.h +++ b/libstdc++-v3/include/bits/regex.h @@ -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 * section [28.7]. @@ -2098,8 +2098,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // [7.11.3] Function template regex_search /** * Searches for a regular expression within a range. - * @param __first [IN] The start of the string to search. - * @param __last [IN] One-past-the-end of the string to search. + * @param __s [IN] The start of the string to search. + * @param __e [IN] One-past-the-end of the string to search. * @param __m [OUT] The match results. * @param __re [IN] The regular expression to search for. * @param __flags [IN] Search policy flags. diff --git a/libstdc++-v3/include/bits/regex_compiler.h b/libstdc++-v3/include/bits/regex_compiler.h index fe2e5f1085c..f5a198f65e9 100644 --- a/libstdc++-v3/include/bits/regex_compiler.h +++ b/libstdc++-v3/include/bits/regex_compiler.h @@ -42,7 +42,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template 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 class _Compiler { diff --git a/libstdc++-v3/include/bits/regex_executor.h b/libstdc++-v3/include/bits/regex_executor.h index 0885716dbfb..708c78e2081 100644 --- a/libstdc++-v3/include/bits/regex_executor.h +++ b/libstdc++-v3/include/bits/regex_executor.h @@ -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 class _Executor diff --git a/libstdc++-v3/include/bits/regex_executor.tcc b/libstdc++-v3/include/bits/regex_executor.tcc index e1cfcb06164..68a5e0490f9 100644 --- a/libstdc++-v3/include/bits/regex_executor.tcc +++ b/libstdc++-v3/include/bits/regex_executor.tcc @@ -72,7 +72,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // TODO: This approach is exponentially slow for certain input. // 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) // // ------------------------------------------------------------ @@ -82,8 +82,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Russ Cox's article (http://swtch.com/~rsc/regexp/regexp1.html) // explained this algorithm clearly. // - // It first computes epsilon closure for every state that's still matching, - // using the same DFS algorithm, but doesn't reenter states (set true in + // It first computes epsilon closure (states that can be achieved without + // 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. // // 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 // 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()) - // 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()) template diff --git a/libstdc++-v3/include/bits/regex_scanner.h b/libstdc++-v3/include/bits/regex_scanner.h index 6dc2b4edf6f..6627db97ce0 100644 --- a/libstdc++-v3/include/bits/regex_scanner.h +++ b/libstdc++-v3/include/bits/regex_scanner.h @@ -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 input range passed to its constructor as a sequence of parse