@@ -15,6 +15,9 @@ namespace cpp2 {
1515
1616namespace regex {
1717
18+ template <typename CharT> using bstring = std::basic_string<CharT>;
19+ template <typename CharT> using bview = std::basic_string_view<CharT>;
20+
1821#line 38 "cpp2regex.h2"
1922template <typename Iter> class match_group ;
2023
@@ -54,12 +57,59 @@ template<typename CharT, typename Inner> class negated_class_entry;
5457#line 211 "cpp2regex.h2"
5558template <typename CharT, string_util::fixed_string Name, typename Inner> class shorthand_class_entry ;
5659
60+ #line 220 "cpp2regex.h2"
61+ template <typename CharT> using digits_class = named_class_entry<CharT," digits" ,range_class_entry<CharT,' 0' ,' 9' >>;
62+ template <typename CharT> using lower_class = named_class_entry<CharT," lower" ,range_class_entry<CharT,' a' ,' z' >>;
63+ template <typename CharT> using upper_class = named_class_entry<CharT," upper" ,range_class_entry<CharT,' A' ,' Z' >>;
64+
65+ #line 226 "cpp2regex.h2"
66+ template <typename CharT> using alnum_class = named_class_entry<CharT," alnum" ,combined_class_entry<CharT,lower_class<CharT>,upper_class<CharT>,digits_class<CharT>>>;
67+ template <typename CharT> using alpha_class = named_class_entry<CharT," alpha" ,combined_class_entry<CharT,lower_class<CharT>,upper_class<CharT>>>;
68+ template <typename CharT> using ascii_class = named_class_entry<CharT," ascii" ,range_class_entry<CharT,' \x00 ' ,' \x7F ' >>;
69+ template <typename CharT> using blank_class = named_class_entry<CharT," blank" ,list_class_entry<CharT,' ' ,' \t ' >>;
70+ template <typename CharT> using cntrl_class = named_class_entry<CharT," cntrl" ,combined_class_entry<CharT,range_class_entry<CharT,' \x00 ' ,' \x1F ' >,single_class_entry<CharT,' \x7F ' >>>;
71+ template <typename CharT> using graph_class = named_class_entry<CharT," graph" ,range_class_entry<CharT,' \x21 ' ,' \x7E ' >>;
72+ template <typename CharT> using hor_space_class = named_class_entry<CharT," hspace" ,list_class_entry<CharT,' \t ' ,' ' >>;
73+ template <typename CharT> using print_class = named_class_entry<CharT," print" ,range_class_entry<CharT,' \x20 ' ,' \x7E ' >>;
74+ template <typename CharT> using punct_class = named_class_entry<CharT," punct" ,list_class_entry<CharT,' [' ,' !' ,' "' ,' #' ,' $' ,' %' ,' &' ,' \' ' ,' (' ,' )' ,' *' ,' +' ,' ,' ,' -' ,' .' ,' /' ,' :' ,' ;' ,' <' ,' =' ,' >' ,' ?' ,' @' ,' [' ,' \\ ' ,' ]' ,' ^' ,' _' ,' `' ,' {' ,' |' ,' }' ,' ~' ,' ]' >>;
75+ template <typename CharT> using space_class = named_class_entry<CharT," space" ,list_class_entry<CharT,' ' ,' \t ' ,' \r ' ,' \n ' ,' \v ' ,' \f ' >>;
76+ template <typename CharT> using ver_space_class = named_class_entry<CharT," vspace" ,list_class_entry<CharT,' \n ' ,' \v ' ,' \f ' ,' \r ' >>;
77+ template <typename CharT> using word_class = named_class_entry<CharT," word" ,combined_class_entry<CharT,alnum_class<CharT>,single_class_entry<CharT,' _' >>>;
78+ template <typename CharT> using xdigit_class = named_class_entry<CharT," xdigit" ,combined_class_entry<CharT,range_class_entry<CharT,' A' ,' F' >,range_class_entry<CharT,' a' ,' f' >,digits_class<CharT>>>;
79+
80+ #line 242 "cpp2regex.h2"
81+ template <typename CharT> using short_digits_class = shorthand_class_entry<CharT," \\ d" ,digits_class<CharT>>;
82+ template <typename CharT> using short_hor_space_class = shorthand_class_entry<CharT," \\ h" ,hor_space_class<CharT>>;
83+ template <typename CharT> using short_space_class = shorthand_class_entry<CharT," \\ s" ,space_class<CharT>>;
84+ template <typename CharT> using short_vert_space_class = shorthand_class_entry<CharT," \\ v" ,ver_space_class<CharT>>;
85+ template <typename CharT> using short_word_class = shorthand_class_entry<CharT," \\ w" ,word_class<CharT>>;
86+
87+ template <typename CharT> using short_not_digits_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ D" ,digits_class<CharT>>>;
88+ template <typename CharT> using short_not_hor_space_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ H" ,hor_space_class<CharT>>>;
89+ template <typename CharT> using short_not_space_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ S" ,space_class<CharT>>>;
90+ template <typename CharT> using short_not_vert_space_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ V" ,ver_space_class<CharT>>>;
91+ template <typename CharT> using short_not_word_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ W" ,word_class<CharT>>>;
92+
5793#line 259 "cpp2regex.h2"
5894template <typename CharT> class alternative_token_matcher ;
5995
6096#line 337 "cpp2regex.h2"
6197template <typename CharT, bool negate, bool case_insensitive, typename ...List> class class_token_matcher ;
6298
99+ #line 397 "cpp2regex.h2"
100+ template <typename CharT, bool case_insensitive> using named_class_no_new_line = class_token_matcher<CharT,true ,case_insensitive,single_class_entry<CharT,' \n ' >>;
101+ template <typename CharT, bool case_insensitive> using named_class_digits = class_token_matcher<CharT,false ,case_insensitive,digits_class<CharT>>;
102+ template <typename CharT, bool case_insensitive> using named_class_hor_space = class_token_matcher<CharT,false ,case_insensitive,hor_space_class<CharT>>;
103+ template <typename CharT, bool case_insensitive> using named_class_space = class_token_matcher<CharT,false ,case_insensitive,space_class<CharT>>;
104+ template <typename CharT, bool case_insensitive> using named_class_ver_space = class_token_matcher<CharT,false ,case_insensitive,ver_space_class<CharT>>;
105+ template <typename CharT, bool case_insensitive> using named_class_word = class_token_matcher<CharT,false ,case_insensitive,word_class<CharT>>;
106+
107+ template <typename CharT, bool case_insensitive> using named_class_not_digits = class_token_matcher<CharT,true ,case_insensitive,digits_class<CharT>>;
108+ template <typename CharT, bool case_insensitive> using named_class_not_hor_space = class_token_matcher<CharT,true ,case_insensitive,hor_space_class<CharT>>;
109+ template <typename CharT, bool case_insensitive> using named_class_not_space = class_token_matcher<CharT,true ,case_insensitive,space_class<CharT>>;
110+ template <typename CharT, bool case_insensitive> using named_class_not_ver_space = class_token_matcher<CharT,true ,case_insensitive,ver_space_class<CharT>>;
111+ template <typename CharT, bool case_insensitive> using named_class_not_word = class_token_matcher<CharT,true ,case_insensitive,word_class<CharT>>;
112+
63113#line 492 "cpp2regex.h2"
64114class range_flags ;
65115
@@ -104,9 +154,7 @@ namespace cpp2 {
104154
105155namespace regex {
106156
107- template <typename CharT> using bstring = std::basic_string<CharT>;
108- template <typename CharT> using bview = std::basic_string_view<CharT>;
109-
157+ #line 29 "cpp2regex.h2"
110158// -----------------------------------------------------------------------
111159//
112160// Helper structures for the expression matching.
@@ -335,39 +383,14 @@ template<typename CharT, string_util::fixed_string Name, typename Inner> class s
335383#line 218 "cpp2regex.h2"
336384// Named basic character classes
337385//
338- template <typename CharT> using digits_class = named_class_entry<CharT," digits" ,range_class_entry<CharT,' 0' ,' 9' >>;
339- template <typename CharT> using lower_class = named_class_entry<CharT," lower" ,range_class_entry<CharT,' a' ,' z' >>;
340- template <typename CharT> using upper_class = named_class_entry<CharT," upper" ,range_class_entry<CharT,' A' ,' Z' >>;
341386
387+ #line 224 "cpp2regex.h2"
342388// Named other classes
343389//
344- template <typename CharT> using alnum_class = named_class_entry<CharT," alnum" ,combined_class_entry<CharT,lower_class<CharT>,upper_class<CharT>,digits_class<CharT>>>;
345- template <typename CharT> using alpha_class = named_class_entry<CharT," alpha" ,combined_class_entry<CharT,lower_class<CharT>,upper_class<CharT>>>;
346- template <typename CharT> using ascii_class = named_class_entry<CharT," ascii" ,range_class_entry<CharT,' \x00 ' ,' \x7F ' >>;
347- template <typename CharT> using blank_class = named_class_entry<CharT," blank" ,list_class_entry<CharT,' ' ,' \t ' >>;
348- template <typename CharT> using cntrl_class = named_class_entry<CharT," cntrl" ,combined_class_entry<CharT,range_class_entry<CharT,' \x00 ' ,' \x1F ' >,single_class_entry<CharT,' \x7F ' >>>;
349- template <typename CharT> using graph_class = named_class_entry<CharT," graph" ,range_class_entry<CharT,' \x21 ' ,' \x7E ' >>;
350- template <typename CharT> using hor_space_class = named_class_entry<CharT," hspace" ,list_class_entry<CharT,' \t ' ,' ' >>;
351- template <typename CharT> using print_class = named_class_entry<CharT," print" ,range_class_entry<CharT,' \x20 ' ,' \x7E ' >>;
352- template <typename CharT> using punct_class = named_class_entry<CharT," punct" ,list_class_entry<CharT,' [' ,' !' ,' "' ,' #' ,' $' ,' %' ,' &' ,' \' ' ,' (' ,' )' ,' *' ,' +' ,' ,' ,' -' ,' .' ,' /' ,' :' ,' ;' ,' <' ,' =' ,' >' ,' ?' ,' @' ,' [' ,' \\ ' ,' ]' ,' ^' ,' _' ,' `' ,' {' ,' |' ,' }' ,' ~' ,' ]' >>;
353- template <typename CharT> using space_class = named_class_entry<CharT," space" ,list_class_entry<CharT,' ' ,' \t ' ,' \r ' ,' \n ' ,' \v ' ,' \f ' >>;
354- template <typename CharT> using ver_space_class = named_class_entry<CharT," vspace" ,list_class_entry<CharT,' \n ' ,' \v ' ,' \f ' ,' \r ' >>;
355- template <typename CharT> using word_class = named_class_entry<CharT," word" ,combined_class_entry<CharT,alnum_class<CharT>,single_class_entry<CharT,' _' >>>;
356- template <typename CharT> using xdigit_class = named_class_entry<CharT," xdigit" ,combined_class_entry<CharT,range_class_entry<CharT,' A' ,' F' >,range_class_entry<CharT,' a' ,' f' >,digits_class<CharT>>>;
357390
391+ #line 240 "cpp2regex.h2"
358392// Shorthand class entries
359393//
360- template <typename CharT> using short_digits_class = shorthand_class_entry<CharT," \\ d" ,digits_class<CharT>>;
361- template <typename CharT> using short_hor_space_class = shorthand_class_entry<CharT," \\ h" ,hor_space_class<CharT>>;
362- template <typename CharT> using short_space_class = shorthand_class_entry<CharT," \\ s" ,space_class<CharT>>;
363- template <typename CharT> using short_vert_space_class = shorthand_class_entry<CharT," \\ v" ,ver_space_class<CharT>>;
364- template <typename CharT> using short_word_class = shorthand_class_entry<CharT," \\ w" ,word_class<CharT>>;
365-
366- template <typename CharT> using short_not_digits_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ D" ,digits_class<CharT>>>;
367- template <typename CharT> using short_not_hor_space_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ H" ,hor_space_class<CharT>>>;
368- template <typename CharT> using short_not_space_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ S" ,space_class<CharT>>>;
369- template <typename CharT> using short_not_vert_space_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ V" ,ver_space_class<CharT>>>;
370- template <typename CharT> using short_not_word_class = negated_class_entry<CharT,shorthand_class_entry<CharT," \\ W" ,word_class<CharT>>>;
371394
372395#line 255 "cpp2regex.h2"
373396// Regex syntax: | Example: ab|ba
@@ -459,18 +482,6 @@ template<typename CharT, bool negate, bool case_insensitive, typename ...List> c
459482#line 395 "cpp2regex.h2"
460483// Named short classes
461484//
462- template <typename CharT, bool case_insensitive> using named_class_no_new_line = class_token_matcher<CharT,true ,case_insensitive,single_class_entry<CharT,' \n ' >>;
463- template <typename CharT, bool case_insensitive> using named_class_digits = class_token_matcher<CharT,false ,case_insensitive,digits_class<CharT>>;
464- template <typename CharT, bool case_insensitive> using named_class_hor_space = class_token_matcher<CharT,false ,case_insensitive,hor_space_class<CharT>>;
465- template <typename CharT, bool case_insensitive> using named_class_space = class_token_matcher<CharT,false ,case_insensitive,space_class<CharT>>;
466- template <typename CharT, bool case_insensitive> using named_class_ver_space = class_token_matcher<CharT,false ,case_insensitive,ver_space_class<CharT>>;
467- template <typename CharT, bool case_insensitive> using named_class_word = class_token_matcher<CharT,false ,case_insensitive,word_class<CharT>>;
468-
469- template <typename CharT, bool case_insensitive> using named_class_not_digits = class_token_matcher<CharT,true ,case_insensitive,digits_class<CharT>>;
470- template <typename CharT, bool case_insensitive> using named_class_not_hor_space = class_token_matcher<CharT,true ,case_insensitive,hor_space_class<CharT>>;
471- template <typename CharT, bool case_insensitive> using named_class_not_space = class_token_matcher<CharT,true ,case_insensitive,space_class<CharT>>;
472- template <typename CharT, bool case_insensitive> using named_class_not_ver_space = class_token_matcher<CharT,true ,case_insensitive,ver_space_class<CharT>>;
473- template <typename CharT, bool case_insensitive> using named_class_not_word = class_token_matcher<CharT,true ,case_insensitive,word_class<CharT>>;
474485
475486#line 411 "cpp2regex.h2"
476487// Regex syntax: \<number> Example: \1
@@ -504,9 +515,9 @@ template<typename CharT, bool positive> [[nodiscard]] auto lookahead_token_match
504515#line 491 "cpp2regex.h2"
505516// Options for range matching.
506517class range_flags {
507- public: static const int not_greedy; // Try to take as few as possible.
508- public: static const int greedy; // Try to take as many as possible.
509- public: static const int possessive; // Do not give back after a greedy match. No backtracking.
518+ public: // Try to take as few as possible.
519+ public: // Try to take as many as possible.
520+ public: // Do not give back after a greedy match. No backtracking.
510521
511522 public: range_flags() = default ;
512523 public: range_flags(range_flags const &) = delete ; /* No 'that' constructor, suppress copy */
@@ -568,8 +579,8 @@ template<typename CharT, bool negate> [[nodiscard]] auto word_boundary_token_mat
568579// Regular expression implementation
569580template <typename CharT, typename matcher_wrapper> class regular_expression
570581 {
571- public: template < typename Iter> using matcher = matcher_wrapper_type<matcher_wrapper,Iter,CharT>; // TODO: Remove when nested types are allowed: https://github.com/hsutter/cppfront/issues/727
572- public: template < typename Iter> using context = matcher_context_type<matcher<Iter>>; // TODO: Remove when nested types are allowed: https://github.com/hsutter/cppfront/issues/727
582+ public: // TODO: Remove when nested types are allowed: https://github.com/hsutter/cppfront/issues/727
583+ public: // TODO: Remove when nested types are allowed: https://github.com/hsutter/cppfront/issues/727
573584
574585 public: template <typename Iter> class search_return
575586 {
0 commit comments