55 template<
typename _CharT>
57 _Scanner(
const _CharT* __begin,
const _CharT* __end,
67 template<
typename _CharT>
93 template<
typename _CharT>
111 "Invalid escape at end of regular expression");
149 "Invalid '(?...)' zero-width assertion "
150 "in regular expression");
176 else if (__builtin_expect(__c == _CharT(0),
false))
183 else if (__c !=
']' && __c !=
'}')
186 auto __narrowc =
_M_ctype.narrow(__c,
'\0');
187 for (; __it->first !=
'\0'; ++__it)
188 if (__it->first == __narrowc)
205 template<
typename _CharT>
221 "Incomplete '[[' character class in "
222 "regular expression");
266 template<
typename _CharT>
307 template<
typename _CharT>
348 "invalid '\\cX' control character in "
349 "regular expression");
353 else if (__c ==
'x' || __c ==
'u')
356 const int __n = __c ==
'x' ? 2 : 4;
357 for (
int __i = 0; __i < __n; __i++)
363 ?
"Invalid '\\xNN' control character in "
365 :
"Invalid '\\uNNNN' control character in "
366 "regular expression");
389 template<
typename _CharT>
400 if (__pos !=
nullptr && *__pos !=
'\0')
418#ifdef __STRICT_ANSI__
429 template<
typename _CharT>
437 if (__pos !=
nullptr)
466 template<
typename _CharT>
484 template<
typename _CharT>
491 case _S_token_anychar:
492 __ostr <<
"any-character\n";
494 case _S_token_backref:
495 __ostr <<
"backref\n";
497 case _S_token_bracket_begin:
498 __ostr <<
"bracket-begin\n";
500 case _S_token_bracket_neg_begin:
501 __ostr <<
"bracket-neg-begin\n";
503 case _S_token_bracket_end:
504 __ostr <<
"bracket-end\n";
506 case _S_token_char_class_name:
507 __ostr <<
"char-class-name \"" << _M_value <<
"\"\n";
509 case _S_token_closure0:
510 __ostr <<
"closure0\n";
512 case _S_token_closure1:
513 __ostr <<
"closure1\n";
515 case _S_token_collsymbol:
516 __ostr <<
"collsymbol \"" << _M_value <<
"\"\n";
521 case _S_token_dup_count:
522 __ostr <<
"dup count: " << _M_value <<
"\n";
527 case _S_token_equiv_class_name:
528 __ostr <<
"equiv-class-name \"" << _M_value <<
"\"\n";
530 case _S_token_interval_begin:
531 __ostr <<
"interval begin\n";
533 case _S_token_interval_end:
534 __ostr <<
"interval end\n";
536 case _S_token_line_begin:
537 __ostr <<
"line begin\n";
539 case _S_token_line_end:
540 __ostr <<
"line end\n";
548 case _S_token_ord_char:
549 __ostr <<
"ordinary character: \"" << _M_value <<
"\"\n";
551 case _S_token_subexpr_begin:
552 __ostr <<
"subexpr begin\n";
554 case _S_token_subexpr_no_group_begin:
555 __ostr <<
"no grouping subexpr begin\n";
557 case _S_token_subexpr_lookahead_begin:
558 __ostr <<
"lookahead subexpr begin\n";
560 case _S_token_subexpr_end:
561 __ostr <<
"subexpr end\n";
563 case _S_token_unknown:
564 __ostr <<
"-- unknown token --\n";
566 case _S_token_oct_num:
567 __ostr <<
"oct number " << _M_value <<
"\n";
569 case _S_token_hex_num:
570 __ostr <<
"hex number " << _M_value <<
"\n";
572 case _S_token_quoted_class:
573 __ostr <<
"quoted class " <<
"\\" << _M_value <<
"\n";
#define _GLIBCXX_VISIBILITY(V)
#define __glibcxx_assert(cond)
#define _GLIBCXX_END_NAMESPACE_VERSION
#define _GLIBCXX_BEGIN_NAMESPACE_VERSION
#define _GLIBCXX_DEBUG_ASSERT(_Condition)
basic_ostream< char > ostream
Base class for char output streams.
const _Facet & use_facet(const locale &__loc)
Return a facet.
ISO C++ entities toplevel namespace is std.
Implementation details not part of the namespace std interface.
constexpr error_type error_ctype(_S_error_ctype)
constexpr error_type error_brace(_S_error_brace)
constexpr error_type error_badbrace(_S_error_badbrace)
constexpr error_type error_escape(_S_error_escape)
constexpr error_type error_paren(_S_error_paren)
constexpr error_type error_brack(_S_error_brack)
constexpr syntax_option_type nosubs
constexpr error_type error_collate(_S_error_collate)
Container class for localization functionality.
const std::pair< char, _TokenT > _M_token_tbl[9]
const char * _M_find_escape(char __c)
const char * _M_spec_char
@ _S_token_bracket_neg_begin
@ _S_token_interval_begin
@ _S_token_subexpr_lookahead_begin
@ _S_token_char_class_name
@ _S_token_equiv_class_name
@ _S_token_subexpr_no_group_begin
_ScannerBase(_FlagT __flags)
void _M_eat_escape_posix()
_Scanner(const _CharT *__begin, const _CharT *__end, _FlagT __flags, std::locale __loc)
void(_Scanner::* _M_eat_escape)()
const std::ctype< _CharT > _CtypeT
void _M_scan_in_bracket()
regex_constants::syntax_option_type _FlagT
void _M_eat_escape_ecma()
const _CharT * _M_current
Scans an input range for regex tokens.