From 81a991735543b016f6ddce7f0514ae2810efd8d4 Mon Sep 17 00:00:00 2001 From: Max Sagebaum Date: Mon, 23 Jun 2025 08:10:48 +0200 Subject: [PATCH 1/4] Update for regex 20 lookbehind test. Removed cpp file and added cpp2 file. --- .../pure2-regex_20_lookbehind.cpp | 8989 ----------------- .../pure2-regex_20_lookbehind.cpp2 | 286 + 2 files changed, 286 insertions(+), 8989 deletions(-) delete mode 100644 regression-tests/pure2-regex_20_lookbehind.cpp create mode 100644 regression-tests/pure2-regex_20_lookbehind.cpp2 diff --git a/regression-tests/pure2-regex_20_lookbehind.cpp b/regression-tests/pure2-regex_20_lookbehind.cpp deleted file mode 100644 index 1f549a3467..0000000000 --- a/regression-tests/pure2-regex_20_lookbehind.cpp +++ /dev/null @@ -1,8989 +0,0 @@ - -#include "cpp2regex.h" - -//=== Cpp2 type declarations ==================================================== - - -#include "cpp2util.h" - -#line 1 "build/20_lookbehind.cpp2" - -#line 166 "build/20_lookbehind.cpp2" -class test_tests_20_lookbehind; - - -//=== Cpp2 type definitions and function declarations =========================== - -#line 1 "build/20_lookbehind.cpp2" -[[nodiscard]] auto create_result(cpp2::impl::in resultExpr, auto const& r) -> std::string; - -#line 113 "build/20_lookbehind.cpp2" -[[nodiscard]] auto sanitize(std::string str) -> std::string; - -#line 125 "build/20_lookbehind.cpp2" -template auto test(M const& regex, cpp2::impl::in id, cpp2::impl::in regex_str, cpp2::impl::in str, cpp2::impl::in kind, cpp2::impl::in resultExpr, - cpp2::impl::in resultExpected) -> void; - -#line 166 "build/20_lookbehind.cpp2" -class test_tests_20_lookbehind { - -#line 223 "build/20_lookbehind.cpp2" - public: auto run() const& -> void; - public: template class regex_01_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_01_matcher() = default; - public: regex_01_matcher(regex_01_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_01_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_01 {}; public: template class regex_02_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_02_matcher() = default; - public: regex_02_matcher(regex_02_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_02_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_02 {}; public: template class regex_03_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_03_matcher() = default; - public: regex_03_matcher(regex_03_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_03_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_03 {}; public: template class regex_04_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_04_matcher() = default; - public: regex_04_matcher(regex_04_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_04_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_04 {}; public: template class regex_05_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_05_matcher() = default; - public: regex_05_matcher(regex_05_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_05_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_05 {}; public: template class regex_06_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_06_matcher() = default; - public: regex_06_matcher(regex_06_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_06_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_06 {}; public: template class regex_07_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_07_matcher() = default; - public: regex_07_matcher(regex_07_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_07_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_07 {}; public: template class regex_08_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_08_matcher() = default; - public: regex_08_matcher(regex_08_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_08_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_08 {}; public: template class regex_09_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_09_matcher() = default; - public: regex_09_matcher(regex_09_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_09_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_09 {}; public: template class regex_10_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_10_matcher() = default; - public: regex_10_matcher(regex_10_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_10_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_10 {}; public: template class regex_11_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_11_matcher() = default; - public: regex_11_matcher(regex_11_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_11_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_11 {}; public: template class regex_12_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_12_matcher() = default; - public: regex_12_matcher(regex_12_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_12_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_12 {}; public: template class regex_13_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_13_matcher() = default; - public: regex_13_matcher(regex_13_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_13_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_13 {}; public: template class regex_14_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_14_matcher() = default; - public: regex_14_matcher(regex_14_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_14_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_14 {}; public: template class regex_15_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_15_matcher() = default; - public: regex_15_matcher(regex_15_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_15_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_15 {}; public: template class regex_16_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_16_matcher() = default; - public: regex_16_matcher(regex_16_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_16_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_16 {}; public: template class regex_17_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_17_matcher() = default; - public: regex_17_matcher(regex_17_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_17_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_17 {}; public: template class regex_18_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_18_matcher() = default; - public: regex_18_matcher(regex_18_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_18_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_18 {}; public: template class regex_19_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_19_matcher() = default; - public: regex_19_matcher(regex_19_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_19_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_19 {}; public: template class regex_20_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_20_matcher() = default; - public: regex_20_matcher(regex_20_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_20_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_20 {}; public: template class regex_21_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_21_matcher() = default; - public: regex_21_matcher(regex_21_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_21_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_21 {}; public: template class regex_22_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_22_matcher() = default; - public: regex_22_matcher(regex_22_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_22_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_22 {}; public: template class regex_23_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_23_matcher() = default; - public: regex_23_matcher(regex_23_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_23_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_23 {}; public: template class regex_24_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_24_matcher() = default; - public: regex_24_matcher(regex_24_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_24_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_24 {}; public: template class regex_25_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_25_matcher() = default; - public: regex_25_matcher(regex_25_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_25_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_25 {}; public: template class regex_26_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_26_matcher() = default; - public: regex_26_matcher(regex_26_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_26_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_26 {}; public: template class regex_27_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_5 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_6 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_27_matcher() = default; - public: regex_27_matcher(regex_27_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_27_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_27 {}; public: template class regex_28_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_5 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_6 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_28_matcher() = default; - public: regex_28_matcher(regex_28_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_28_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_28 {}; public: template class regex_29_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_5 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_6 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_29_matcher() = default; - public: regex_29_matcher(regex_29_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_29_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_29 {}; public: template class regex_30_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_5 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_6 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_30_matcher() = default; - public: regex_30_matcher(regex_30_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_30_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_30 {}; public: template class regex_31_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_31_matcher() = default; - public: regex_31_matcher(regex_31_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_31_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_31 {}; public: template class regex_32_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_32_matcher() = default; - public: regex_32_matcher(regex_32_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_32_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_32 {}; public: template class regex_33_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_33_matcher() = default; - public: regex_33_matcher(regex_33_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_33_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_33 {}; public: template class regex_34_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_34_matcher() = default; - public: regex_34_matcher(regex_34_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_34_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_34 {}; public: template class regex_35_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_35_matcher() = default; - public: regex_35_matcher(regex_35_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_35_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_35 {}; public: template class regex_36_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_5 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_6 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_36_matcher() = default; - public: regex_36_matcher(regex_36_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_36_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_36 {}; public: template class regex_37_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_5 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_6 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_37_matcher() = default; - public: regex_37_matcher(regex_37_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_37_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_37 {}; public: template class regex_38_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_5 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_6 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_38_matcher() = default; - public: regex_38_matcher(regex_38_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_38_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_38 {}; public: template class regex_39_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_5 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_6 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_39_matcher() = default; - public: regex_39_matcher(regex_39_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_39_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_39 {}; public: template class regex_40_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_40_matcher() = default; - public: regex_40_matcher(regex_40_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_40_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_40 {}; public: template class regex_41_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_41_matcher() = default; - public: regex_41_matcher(regex_41_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_41_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_41 {}; public: template class regex_42_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_42_matcher() = default; - public: regex_42_matcher(regex_42_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_42_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_42 {}; public: template class regex_43_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_43_matcher() = default; - public: regex_43_matcher(regex_43_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_43_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_43 {}; public: template class regex_44_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_44_matcher() = default; - public: regex_44_matcher(regex_44_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_44_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_44 {}; public: template class regex_45_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_45_matcher() = default; - public: regex_45_matcher(regex_45_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_45_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_45 {}; public: template class regex_46_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_46_matcher() = default; - public: regex_46_matcher(regex_46_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_46_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_46 {}; public: template class regex_47_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_47_matcher() = default; - public: regex_47_matcher(regex_47_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_47_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_47 {}; public: template class regex_48_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_48_matcher() = default; - public: regex_48_matcher(regex_48_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_48_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_48 {}; public: template class regex_49_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_49_matcher() = default; - public: regex_49_matcher(regex_49_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_49_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_49 {}; public: template class regex_50_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_50_matcher() = default; - public: regex_50_matcher(regex_50_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_50_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_50 {}; public: template class regex_51_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_51_matcher() = default; - public: regex_51_matcher(regex_51_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_51_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_51 {}; public: template class regex_52_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_52_matcher() = default; - public: regex_52_matcher(regex_52_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_52_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_52 {}; public: template class regex_53_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_53_matcher() = default; - public: regex_53_matcher(regex_53_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_53_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_53 {}; public: template class regex_54_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_54_matcher() = default; - public: regex_54_matcher(regex_54_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_54_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_54 {}; public: template class regex_55_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_3 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_4 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_55_matcher() = default; - public: regex_55_matcher(regex_55_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_55_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_55 {}; public: template class regex_56_matcher { - public: template using context = cpp2::regex::match_context; -public: class func_2 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_1 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: class func_0 { - public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; - - }; - - public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; - - public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; - - public: [[nodiscard]] constexpr static auto is_start_match() -> bool; -public: [[nodiscard]] static auto to_string() -> std::string; - - public: regex_56_matcher() = default; - public: regex_56_matcher(regex_56_matcher const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(regex_56_matcher const&) -> void = delete; - - }; - - public: cpp2::regex::regular_expression> regex_56 {}; - public: test_tests_20_lookbehind() = default; - public: test_tests_20_lookbehind(test_tests_20_lookbehind const&) = delete; /* No 'that' constructor, suppress copy */ - public: auto operator=(test_tests_20_lookbehind const&) -> void = delete; - - -#line 283 "build/20_lookbehind.cpp2" -}; -auto main() -> int; - -//=== Cpp2 function definitions ================================================= - -#line 1 "build/20_lookbehind.cpp2" -[[nodiscard]] auto create_result(cpp2::impl::in resultExpr, auto const& r) -> std::string{ -#line 2 "build/20_lookbehind.cpp2" - std::string result {""}; - - auto get_next {[_0 = (&resultExpr)](auto const& iter) mutable -> auto{ - auto start {std::distance(CPP2_UFCS(cbegin)((*cpp2::impl::assert_not_null(_0))), iter)}; - auto firstDollar {CPP2_UFCS(find)((*cpp2::impl::assert_not_null(_0)), "$", start)}; - auto firstAt {CPP2_UFCS(find)((*cpp2::impl::assert_not_null(_0)), "@", cpp2::move(start))}; - - auto end {std::min(cpp2::move(firstDollar), cpp2::move(firstAt))}; - if (end != std::string::npos) { - return CPP2_UFCS(cbegin)((*cpp2::impl::assert_not_null(_0))) + cpp2::move(end); - } - else { - return CPP2_UFCS(cend)((*cpp2::impl::assert_not_null(_0))); - } - }}; - auto extract_group_and_advance {[](auto& iter) -> auto{ - auto start {iter}; - - for( ; std::isdigit(*cpp2::impl::assert_not_null(iter)); ++iter ) {} - - return std::stoi(std::string(cpp2::move(start), iter)); - }}; - auto extract_until {[](auto& iter, cpp2::impl::in to) -> auto{ - auto start {iter}; - - for( ; (to != *cpp2::impl::assert_not_null(iter)); ++iter ) {}// TODO: Without bracket: error: postfix unary * (dereference) cannot be immediately followed by a (, identifier, or literal - add whitespace before * here if you meant binary * (multiplication) - - return std::string(cpp2::move(start), iter); - }}; - - auto iter {CPP2_UFCS(begin)(resultExpr)}; - - while( iter != CPP2_UFCS(end)(resultExpr) ) { - auto next {get_next(iter)}; - - if (next != iter) { - result += std::string(iter, next); - } - if (next != CPP2_UFCS(end)(resultExpr)) { - if (*cpp2::impl::assert_not_null(next) == '$') { - ++next; - - if (*cpp2::impl::assert_not_null(next) == '&') { - ++next; - result += CPP2_UFCS(group)(r, 0); - } - else {if (*cpp2::impl::assert_not_null(next) == '-' || *cpp2::impl::assert_not_null(next) == '+') { - auto is_start {*cpp2::impl::assert_not_null(next) == '-'}; - ++next; - if (*cpp2::impl::assert_not_null(next) == '{') { - ++next; // Skip { - auto group {extract_until(next, '}')}; - ++next; // Skip } - result += CPP2_UFCS(group)(r, cpp2::move(group)); - } - else {if (*cpp2::impl::assert_not_null(next) == '[') { - ++next; // Skip [ - auto group {extract_group_and_advance(next)}; - ++next; // Skip ] - - if (cpp2::move(is_start)) { - result += std::to_string(CPP2_UFCS(group_start)(r, cpp2::move(group))); - } - else { - result += std::to_string(CPP2_UFCS(group_end)(r, cpp2::move(group))); - } - } - else { - // Return max group - result += CPP2_UFCS(group)(r, CPP2_UFCS(group_number)(r) - 1); - }} - } - else {if (std::isdigit(*cpp2::impl::assert_not_null(next))) { - auto group {extract_group_and_advance(next)}; - result += CPP2_UFCS(group)(r, cpp2::move(group)); - } - else { - std::cerr << "Not implemented"; - }}} - } - else {if (*cpp2::impl::assert_not_null(next) == '@') { - ++next; - - if (*cpp2::impl::assert_not_null(next) == '-' || *cpp2::impl::assert_not_null(next) == '+') { - auto i {0}; - for( ; cpp2::impl::cmp_less(i,cpp2::unchecked_narrow(CPP2_UFCS(group_number)(r))); ++i ) { - auto pos {0}; - if (*cpp2::impl::assert_not_null(next) == '-') { - pos = CPP2_UFCS(group_start)(r, i); - } - else { - pos = CPP2_UFCS(group_end)(r, i); - } - result += std::to_string(cpp2::move(pos)); - } - ++next; - } - else { - std::cerr << "Not implemented"; - } - } - else { - std::cerr << "Not implemented."; - }} - } - iter = cpp2::move(next); - } - - return result; -} - -#line 113 "build/20_lookbehind.cpp2" -[[nodiscard]] auto sanitize(std::string str) -> std::string -{ - str = cpp2::string_util::replace_all(str, "\a", "\\a"); - str = cpp2::string_util::replace_all(str, "\f", "\\f"); - str = cpp2::string_util::replace_all(str, "\x1b", "\\e"); - str = cpp2::string_util::replace_all(str, "\n", "\\n"); - str = cpp2::string_util::replace_all(str, "\r", "\\r"); - str = cpp2::string_util::replace_all(str, "\t", "\\t"); - - return cpp2::move(str); -} - -#line 125 "build/20_lookbehind.cpp2" -template auto test(M const& regex, cpp2::impl::in id, cpp2::impl::in regex_str, cpp2::impl::in str, cpp2::impl::in kind, cpp2::impl::in resultExpr, - cpp2::impl::in resultExpected) -> void{ - - std::string warning {""}; - if (CPP2_UFCS(to_string)(regex) != regex_str) { - warning = "Warning: Parsed regex does not match."; - } - - std::string status {"OK"}; - - auto r {CPP2_UFCS(search)(regex, str)}; - - if ("y" == kind || "yM" == kind || "yS" == kind || "yB" == kind) { - if (!(r.matched)) { - status = "Failure: Regex should apply."; - } - else { - // Have a match check the result - - auto result {create_result(resultExpr, cpp2::move(r))}; - - if (result != resultExpected) { - status = "Failure: Result is wrong. (is: " + cpp2::to_string(sanitize(cpp2::move(result))) + ")"; - } - } - } - else {if ("n" == kind) { - if (r.matched) { - status = "Failure: Regex should not apply. Result is '" + cpp2::to_string(CPP2_UFCS(group)(cpp2::move(r), 0)) + "'"; - } - }else { - status = "Unknown kind '" + cpp2::to_string(kind) + "'"; - }} - - if (!(CPP2_UFCS(empty)(warning))) { - warning += " "; - } - std::cout << "" + cpp2::to_string(id) + "_" + cpp2::to_string(kind) + ": " + cpp2::to_string(cpp2::move(status)) + " " + cpp2::to_string(cpp2::move(warning)) + "regex: " + cpp2::to_string(regex_str) + " parsed_regex: " + cpp2::to_string(CPP2_UFCS(to_string)(regex)) + " str: " + cpp2::to_string(sanitize(str)) + " result_expr: " + cpp2::to_string(resultExpr) + " expected_results " + cpp2::to_string(sanitize(resultExpected)) + "" << std::endl; -} - -#line 223 "build/20_lookbehind.cpp2" - auto test_tests_20_lookbehind::run() const& -> void{ - std::cout << "Running tests_20_lookbehind:" << std::endl; - test(regex_01, "01", R"((?<=a)b)", "ab", "y", R"($&)", "b"); - test(regex_02, "02", R"((?<=af?)b)", "ab", "y", R"($&)", "b"); - test(regex_03, "03", R"((?<=a)b)", "cb", "n", R"(-)", "-"); - test(regex_04, "04", R"((?<=a(?:fo)?)b)", "cb", "n", R"(-)", "-"); - test(regex_05, "05", R"((?<=a)b)", "b", "n", R"(-)", "-"); - test(regex_06, "06", R"((?<=a(?:foo)?)b)", "b", "n", R"(-)", "-"); - test(regex_07, "07", R"((?)foo)", "bar>foo", "y", R"($&)", "foo"); - test(regex_50, "50", R"((?)foo)", "bar>foo", "n", R"(-)", "-"); - test(regex_51, "51", R"((?<=bar>ABC)foo)", "bar>ABCfoo", "y", R"($&)", "foo"); - test(regex_52, "52", R"((?ABC)foo)", "bar>ABCfoo", "n", R"(-)", "-"); - test(regex_53, "53", R"((?<=abcd(?<=(aaaabcd))))", "..aaaabcd..", "y", R"($1)", "aaaabcd"); - test(regex_54, "54", R"((?=xy(?<=(aaxy))))", "..aaxy..", "y", R"($1)", "aaxy"); - test(regex_55, "55", R"((?=xy(?<=(aaxyz?))))", "..aaxy..", "y", R"($1)", "aaxy"); - test(regex_56, "56", R"((?<=(?=(aaxy))aa))", "..aaxy..", "y", R"($1)", "aaxy"); - std::cout << std::endl; - } - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"a"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_01_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::to_string() -> std::string{return R"((?<=a)b)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"f"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"a"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_02_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::to_string() -> std::string{return R"((?<=af?)b)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"a"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_03_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::to_string() -> std::string{return R"((?<=a)b)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"of"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 2;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"a"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_04_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::to_string() -> std::string{return R"((?<=a(?:fo)?)b)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"a"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_05_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::to_string() -> std::string{return R"((?<=a)b)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"oof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"a"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_06_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::to_string() -> std::string{return R"((?<=a(?:foo)?)b)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_07_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"boof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 4;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_08_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_09_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"aboof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),5)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,5); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 5;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_10_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_11_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"raboof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),6)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,6); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 6;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_12_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_13_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"braboof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),7)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,7); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 7;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_14_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_0 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_15_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"e"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_16_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_17_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_18_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_19_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"d"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_4(), func_2(), cpp2::regex::no_reset(), func_3(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - - auto tmp_2_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_2 {cpp2::regex::make_on_return(cpp2::move(tmp_2_func))}; - static_cast(cpp2::move(tmp_2)); - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_3 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_20_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"d"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_4(), func_2(), cpp2::regex::no_reset(), func_3(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - - auto tmp_2_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_2 {cpp2::regex::make_on_return(cpp2::move(tmp_2_func))}; - static_cast(cpp2::move(tmp_2)); - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_21_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"dc"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 2;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_22_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - std::array str_tmp_0 {"a"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - ctx.set_group_start(1, r.pos); - - auto tmp_1_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_1 {cpp2::regex::make_on_return(cpp2::move(tmp_1_func))}; - static_cast(cpp2::move(tmp_1)); - if (!(cpp2::regex::line_start_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::line_end_token_matcher(r.pos, ctx))) {r.matched = false;break;} - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_23_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::to_string() -> std::string{return R"($(?<=^(a)))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_24_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::to_string() -> std::string{return R"((.*)c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_25_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::to_string() -> std::string{return R"((.*)(?<=b))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - - std::array str_tmp_2 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_26_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::to_string() -> std::string{return R"((.*)(?<=b)c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_2 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_27_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::to_string() -> std::string{return R"((.*)(?<=b|c))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_2 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - - std::array str_tmp_3 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_28_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::to_string() -> std::string{return R"((.*)(?<=b|c)c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_29_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::to_string() -> std::string{return R"((.*)(?<=c|b))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - - std::array str_tmp_3 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_30_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::to_string() -> std::string{return R"((.*)(?<=c|b)c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_31_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::to_string() -> std::string{return R"((.*)(?<=[bc]))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_32_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::to_string() -> std::string{return R"((.*)(?<=[bc])c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_33_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::to_string() -> std::string{return R"((.*?)c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_34_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::to_string() -> std::string{return R"((.*?)(?<=b))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - - std::array str_tmp_2 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_35_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::to_string() -> std::string{return R"((.*?)(?<=b)c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_2 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_36_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::to_string() -> std::string{return R"((.*?)(?<=b|c))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_2 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - - std::array str_tmp_3 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_37_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::to_string() -> std::string{return R"((.*?)(?<=b|c)c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_38_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::to_string() -> std::string{return R"((.*?)(?<=c|b))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_2 {"b"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - - std::array str_tmp_3 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_39_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::to_string() -> std::string{return R"((.*?)(?<=c|b)c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_40_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::to_string() -> std::string{return R"((.*?)(?<=[bc]))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - auto tmp_0_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; - static_cast(cpp2::move(tmp_0)); - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - - std::array str_tmp_1 {"c"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_41_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::to_string() -> std::string{return R"((.*?)(?<=[bc])c)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"oof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_42_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::to_string() -> std::string{return R"((?<=foo))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"oof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_43_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::to_string() -> std::string{return R"((?<=foo))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"oof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_44_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::to_string() -> std::string{return R"(.*(?<=foo))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"oof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_45_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::to_string() -> std::string{return R"(.*(?<=foo))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"oof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"Y"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_46_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::to_string() -> std::string{return R"((?<=foo)Y)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"oof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"o"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_2 {"Y"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_47_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::to_string() -> std::string{return R"(o(?<=foo)Y)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} - - std::array str_tmp_1 {"oof"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"X"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_48_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::to_string() -> std::string{return R"(X(?<=foo.)[YZ])"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {">rab"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 4;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"foo"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_49_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::to_string() -> std::string{return R"((?<=bar>)foo)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {">rab"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 4;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"foo"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_50_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::to_string() -> std::string{return R"((?)foo)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"CBA>rab"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),7)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,7); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 7;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"foo"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_51_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::to_string() -> std::string{return R"((?<=bar>ABC)foo)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"CBA>rab"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),7)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,7); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 7;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - - std::array str_tmp_1 {"foo"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 3;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_52_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::to_string() -> std::string{return R"((?ABC)foo)"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - std::array str_tmp_0 {"dcbaaaa"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),7)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,7); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 7;} - else {break;} - ctx.set_group_start(1, r.pos); - - auto tmp_1_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_1 {cpp2::regex::make_on_return(cpp2::move(tmp_1_func))}; - static_cast(cpp2::move(tmp_1)); - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_2()))) {r.matched = false;break;} - - std::array str_tmp_2 {"dcba"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 4;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_53_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::to_string() -> std::string{return R"((?<=abcd(?<=(aaaabcd))))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - - std::array str_tmp_1 {"yxaa"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 4;} - else {break;} - ctx.set_group_start(1, r.pos); - - auto tmp_2_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_2 {cpp2::regex::make_on_return(cpp2::move(tmp_2_func))}; - static_cast(cpp2::move(tmp_2)); - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"xy"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 2;} - else {break;} - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_2()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookahead_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_54_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::to_string() -> std::string{return R"((?=xy(?<=(aaxy))))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_1 {"z"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 1;} - else {break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_end(1, r.pos); - } - while ( - false - ); - if (r.matched) { - r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_3(), cpp2::regex::no_reset(), other, func_4()); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_2 {"yxaa"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 4;} - else {break;} - ctx.set_group_start(1, r.pos); - - auto tmp_3_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_3 {cpp2::regex::make_on_return(cpp2::move(tmp_3_func))}; - static_cast(cpp2::move(tmp_3)); - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"xy"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 2;} - else {break;} - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_2()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookahead_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_55_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::to_string() -> std::string{return R"((?=xy(?<=(aaxyz?))))"; } - - - - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - ctx.set_group_start(1, r.pos); - - std::array str_tmp_1 {"aaxy"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 4;} - else {break;} - ctx.set_group_end(1, r.pos); - - auto tmp_2_func { -[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ - if (!((*cpp2::impl::assert_not_null(_1)).matched)) { - (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); - } - } - }; - - auto tmp_2 {cpp2::regex::make_on_return(cpp2::move(tmp_2_func))}; - static_cast(cpp2::move(tmp_2)); - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - - std::array str_tmp_0 {"aa"}; - if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { - r.matched = false; - break; - } -{ -int i{0}; - for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { - if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} - } -} - if (r.matched) {r.pos += 2;} - else {break;} - if (!(cpp2::regex::lookahead_token_matcher(r.pos, ctx, func_2()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ - - auto r {ctx.pass(cur)}; - do { - if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} - } - while ( - false - ); - if (r.matched) { - r = other(r.pos, ctx); - } - else { - r.pos = ctx.end; - } - static_cast(CPP2_FORWARD(ctx)); - return r; - } - - template template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ - ctx.set_group_start(0, cur); - - auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; - if (r.matched) {ctx.set_group_end(0, r.pos);} - return r; - } - - template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::get_named_group_index(auto const& name) -> int{ - static_cast(name); - return -1; - } - - template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_56_matcher::is_start_match() -> bool { return false; } -template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::to_string() -> std::string{return R"((?<=(?=(aaxy))aa))"; } - - -#line 284 "build/20_lookbehind.cpp2" -auto main() -> int{ - CPP2_UFCS(run)(test_tests_20_lookbehind()); -} - diff --git a/regression-tests/pure2-regex_20_lookbehind.cpp2 b/regression-tests/pure2-regex_20_lookbehind.cpp2 new file mode 100644 index 0000000000..75ad0ade51 --- /dev/null +++ b/regression-tests/pure2-regex_20_lookbehind.cpp2 @@ -0,0 +1,286 @@ +create_result: (resultExpr: std::string, r) -> std::string = { + result: std::string = ""; + + get_next := :(iter) -> _ = { + start := std::distance(resultExpr&$*.cbegin(), iter); + firstDollar := resultExpr&$*.find("$", start); + firstAt := resultExpr&$*.find("@", start); + + end := std::min(firstDollar, firstAt); + if end != std::string::npos { + return resultExpr&$*.cbegin() + end; + } + else { + return resultExpr&$*.cend(); + } + }; + extract_group_and_advance := :(inout iter) -> _ = { + start := iter; + + while std::isdigit(iter*) next iter++ {} + + return std::stoi(std::string(start, iter)); + }; + extract_until := :(inout iter, to: char) -> _ = { + start := iter; + + while (to != iter*) next iter++ {} // TODO: Without bracket: error: postfix unary * (dereference) cannot be immediately followed by a (, identifier, or literal - add whitespace before * here if you meant binary * (multiplication) + + return std::string(start, iter); + }; + + iter := resultExpr.begin(); + + while iter != resultExpr.end() { + next := get_next(iter); + + if next != iter { + result += std::string(iter, next); + } + if next != resultExpr.end() { + if next* == '$' { + next++; + + if next* == '&' { + next++; + result += r.group(0); + } + else if next* == '-' || next* == '+' { + is_start := next* == '-'; + next++; + if next* == '{' { + next++; // Skip { + group := extract_until(next, '}'); + next++; // Skip } + result += r.group(group); + } + else if next* == '[' { + next++; // Skip [ + group := extract_group_and_advance(next); + next++; // Skip ] + + if is_start { + result += std::to_string(r.group_start(group)); + } + else { + result += std::to_string(r.group_end(group)); + } + } + else { + // Return max group + result += r.group(r.group_number() - 1); + } + } + else if std::isdigit(next*) { + group := extract_group_and_advance(next); + result += r.group(group); + } + else { + std::cerr << "Not implemented"; + } + } + else if next* == '@' { + next++; + + if next* == '-' || next* == '+' { + i := 0; + while i < cpp2::unchecked_narrow(r.group_number()) next i++ { + pos := 0; + if next* == '-' { + pos = r.group_start(i); + } + else { + pos = r.group_end(i); + } + result += std::to_string(pos); + } + next++; + } + else { + std::cerr << "Not implemented"; + } + } + else { + std::cerr << "Not implemented."; + } + } + iter = next; + } + + return result; +} + +sanitize: (copy str: std::string) -> std::string = +{ + str = cpp2::string_util::replace_all(str, "\a", "\\a"); + str = cpp2::string_util::replace_all(str, "\f", "\\f"); + str = cpp2::string_util::replace_all(str, "\x1b", "\\e"); + str = cpp2::string_util::replace_all(str, "\n", "\\n"); + str = cpp2::string_util::replace_all(str, "\r", "\\r"); + str = cpp2::string_util::replace_all(str, "\t", "\\t"); + + return str; +} + +test: (regex: M, id: std::string, regex_str: std::string, str: std::string, kind: std::string, resultExpr: std::string, + resultExpected: std::string) = { + + warning: std::string = ""; + if regex.to_string() != regex_str { + warning = "Warning: Parsed regex does not match."; + } + + status: std::string = "OK"; + + r := regex.search(str); + + if "y" == kind || "yM" == kind || "yS" == kind || "yB" == kind { + if !r.matched { + status = "Failure: Regex should apply."; + } + else { + // Have a match check the result + + result := create_result(resultExpr, r); + + if result != resultExpected { + status = "Failure: Result is wrong. (is: (sanitize(result))$)"; + } + } + } + else if "n" == kind { + if r.matched { + status = "Failure: Regex should not apply. Result is '(r.group(0))$'"; + } + } else { + status = "Unknown kind '(kind)$'"; + } + + if !warning.empty() { + warning += " "; + } + std::cout << "(id)$_(kind)$: (status)$ (warning)$regex: (regex_str)$ parsed_regex: (regex.to_string())$ str: (sanitize(str))$ result_expr: (resultExpr)$ expected_results (sanitize(resultExpected))$" << std::endl; +} + + +test_tests_20_lookbehind: @regex type = { + regex_01 := R"((?<=a)b)"; + regex_02 := R"((?<=af?)b)"; + regex_03 := R"((?<=a)b)"; + regex_04 := R"((?<=a(?:fo)?)b)"; + regex_05 := R"((?<=a)b)"; + regex_06 := R"((?<=a(?:foo)?)b)"; + regex_07 := R"((?)foo)"; + regex_50 := R"((?)foo)"; + regex_51 := R"((?<=bar>ABC)foo)"; + regex_52 := R"((?ABC)foo)"; + regex_53 := R"((?<=abcd(?<=(aaaabcd))))"; + regex_54 := R"((?=xy(?<=(aaxy))))"; + regex_55 := R"((?=xy(?<=(aaxyz?))))"; + regex_56 := R"((?<=(?=(aaxy))aa))"; + run: (this) = { + std::cout << "Running tests_20_lookbehind:"<< std::endl; + test(regex_01, "01", R"((?<=a)b)", "ab", "y", R"($&)", "b"); + test(regex_02, "02", R"((?<=af?)b)", "ab", "y", R"($&)", "b"); + test(regex_03, "03", R"((?<=a)b)", "cb", "n", R"(-)", "-"); + test(regex_04, "04", R"((?<=a(?:fo)?)b)", "cb", "n", R"(-)", "-"); + test(regex_05, "05", R"((?<=a)b)", "b", "n", R"(-)", "-"); + test(regex_06, "06", R"((?<=a(?:foo)?)b)", "b", "n", R"(-)", "-"); + test(regex_07, "07", R"((?)foo)", "bar>foo", "y", R"($&)", "foo"); + test(regex_50, "50", R"((?)foo)", "bar>foo", "n", R"(-)", "-"); + test(regex_51, "51", R"((?<=bar>ABC)foo)", "bar>ABCfoo", "y", R"($&)", "foo"); + test(regex_52, "52", R"((?ABC)foo)", "bar>ABCfoo", "n", R"(-)", "-"); + test(regex_53, "53", R"((?<=abcd(?<=(aaaabcd))))", "..aaaabcd..", "y", R"($1)", "aaaabcd"); + test(regex_54, "54", R"((?=xy(?<=(aaxy))))", "..aaxy..", "y", R"($1)", "aaxy"); + test(regex_55, "55", R"((?=xy(?<=(aaxyz?))))", "..aaxy..", "y", R"($1)", "aaxy"); + test(regex_56, "56", R"((?<=(?=(aaxy))aa))", "..aaxy..", "y", R"($1)", "aaxy"); + std::cout << std::endl; + } +} +main: () = { + test_tests_20_lookbehind().run(); +} From eff33c2797635dd4df296911f2b73403c0e705f8 Mon Sep 17 00:00:00 2001 From: Max Sagebaum Date: Fri, 8 Aug 2025 11:22:19 +0200 Subject: [PATCH 2/4] Fix for name lookup issues with MSVC. --- include/cpp2regex.h | 20 ++++++++++---------- include/cpp2regex.h2 | 12 ++++++------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/include/cpp2regex.h b/include/cpp2regex.h index e2a69946ca..1463724228 100644 --- a/include/cpp2regex.h +++ b/include/cpp2regex.h @@ -261,10 +261,10 @@ template [[nodiscard]] auto make_ #line 184 "cpp2regex.h2" // Helpers for creating wrappers of the iterators. // -template [[nodiscard]] auto make_forward_iterator(Iter const& pos) -> auto; -template [[nodiscard]] auto make_forward_iterator(std::reverse_iterator const& pos) -> auto; -template [[nodiscard]] auto make_reverse_iterator(Iter const& pos) -> auto; -template [[nodiscard]] auto make_reverse_iterator(std::reverse_iterator const& pos) -> auto; +template [[nodiscard]] auto cpp2_make_forward_iterator(Iter const& pos) -> auto; +template [[nodiscard]] auto cpp2_make_forward_iterator(std::reverse_iterator const& pos) -> auto; +template [[nodiscard]] auto cpp2_make_reverse_iterator(Iter const& pos) -> auto; +template [[nodiscard]] auto cpp2_make_reverse_iterator(std::reverse_iterator const& pos) -> auto; #line 192 "cpp2regex.h2" // End function that returns a valid match. @@ -927,13 +927,13 @@ template [[nodiscard]] auto make_ } #line 186 "cpp2regex.h2" -template [[nodiscard]] auto make_forward_iterator(Iter const& pos) -> auto { return pos; } +template [[nodiscard]] auto cpp2_make_forward_iterator(Iter const& pos) -> auto { return pos; } #line 187 "cpp2regex.h2" -template [[nodiscard]] auto make_forward_iterator(std::reverse_iterator const& pos) -> auto { return CPP2_UFCS(base)(pos); } +template [[nodiscard]] auto cpp2_make_forward_iterator(std::reverse_iterator const& pos) -> auto { return CPP2_UFCS(base)(pos); } #line 188 "cpp2regex.h2" -template [[nodiscard]] auto make_reverse_iterator(Iter const& pos) -> auto { return std::make_reverse_iterator(pos); } +template [[nodiscard]] auto cpp2_make_reverse_iterator(Iter const& pos) -> auto { return std::make_reverse_iterator(pos); } #line 189 "cpp2regex.h2" -template [[nodiscard]] auto make_reverse_iterator(std::reverse_iterator const& pos) -> auto { return pos; } +template [[nodiscard]] auto cpp2_make_reverse_iterator(std::reverse_iterator const& pos) -> auto { return pos; } #line 196 "cpp2regex.h2" [[nodiscard]] auto true_end_func::operator()(auto const& cur, auto& ctx) const& -> decltype(auto) { return ctx.pass(cur); } @@ -1153,7 +1153,7 @@ template [[nodiscard]] auto line_start_toke #line 575 "cpp2regex.h2" template [[nodiscard]] auto lookahead_token_matcher(auto const& cur, auto& ctx, auto const& func) -> bool { - auto r {func(make_forward_iterator(cur), make_forward_match_context(ctx), true_end_func())}; + auto r {func(cpp2_make_forward_iterator(cur), make_forward_match_context(ctx), true_end_func())}; if (!(positive)) { r.matched = !(r.matched); } @@ -1164,7 +1164,7 @@ template [[nodiscard]] auto lookahead_token_match #line 589 "cpp2regex.h2" template [[nodiscard]] auto lookbehind_token_matcher(auto const& cur, auto& ctx, auto const& func) -> bool { - auto r {func(make_reverse_iterator(cur), make_reverse_match_context(ctx), true_end_func())}; + auto r {func(cpp2_make_reverse_iterator(cur), make_reverse_match_context(ctx), true_end_func())}; if (!(positive)) { r.matched = !(r.matched); } diff --git a/include/cpp2regex.h2 b/include/cpp2regex.h2 index 763c5638be..6fbc03f128 100644 --- a/include/cpp2regex.h2 +++ b/include/cpp2regex.h2 @@ -183,10 +183,10 @@ make_reverse_match_context: (inout ctx: reverse_m // Helpers for creating wrappers of the iterators. // -make_forward_iterator: (pos: Iter) -> _ = pos; -make_forward_iterator: (pos: std::reverse_iterator) -> _ = pos.base(); -make_reverse_iterator: (pos: Iter) -> _ = std::make_reverse_iterator(pos); -make_reverse_iterator: (pos: std::reverse_iterator) -> _ = pos; +cpp2_make_forward_iterator: (pos: Iter) -> _ = pos; +cpp2_make_forward_iterator: (pos: std::reverse_iterator) -> _ = pos.base(); +cpp2_make_reverse_iterator: (pos: Iter) -> _ = std::make_reverse_iterator(pos); +cpp2_make_reverse_iterator: (pos: std::reverse_iterator) -> _ = pos; // End function that returns a valid match. @@ -574,7 +574,7 @@ line_start_token_matcher: (cur, inout ctx) -> bool // lookahead_token_matcher: (cur, inout ctx, func) -> bool = { - r := func(make_forward_iterator(cur), make_forward_match_context(ctx), true_end_func()); + r := func(cpp2_make_forward_iterator(cur), make_forward_match_context(ctx), true_end_func()); if !positive { r.matched = !r.matched; } @@ -588,7 +588,7 @@ lookahead_token_matcher: (cur, inout ctx, func) -> bool // lookbehind_token_matcher: (cur, inout ctx, func) -> bool = { - r := func(make_reverse_iterator(cur), make_reverse_match_context(ctx), true_end_func()); + r := func(cpp2_make_reverse_iterator(cur), make_reverse_match_context(ctx), true_end_func()); if !positive { r.matched = !r.matched; } From bb405b6c0f52fbb662693bc8f74f234e3ec24edb Mon Sep 17 00:00:00 2001 From: Max Sagebaum Date: Fri, 8 Aug 2025 11:25:34 +0200 Subject: [PATCH 3/4] Add missing files. --- .../pure2-regex_20_lookbehind.cpp.execution | 58 + .../pure2-regex_20_lookbehind.cpp | 8990 +++++++++++++++++ .../pure2-regex_20_lookbehind.cpp2.output | 2 + 3 files changed, 9050 insertions(+) create mode 100644 regression-tests/test-results/gcc-13-c++2b/pure2-regex_20_lookbehind.cpp.execution create mode 100644 regression-tests/test-results/pure2-regex_20_lookbehind.cpp create mode 100644 regression-tests/test-results/pure2-regex_20_lookbehind.cpp2.output diff --git a/regression-tests/test-results/gcc-13-c++2b/pure2-regex_20_lookbehind.cpp.execution b/regression-tests/test-results/gcc-13-c++2b/pure2-regex_20_lookbehind.cpp.execution new file mode 100644 index 0000000000..cd61d4f563 --- /dev/null +++ b/regression-tests/test-results/gcc-13-c++2b/pure2-regex_20_lookbehind.cpp.execution @@ -0,0 +1,58 @@ +Running tests_20_lookbehind: +01_y: OK regex: (?<=a)b parsed_regex: (?<=a)b str: ab result_expr: $& expected_results b +02_y: OK regex: (?<=af?)b parsed_regex: (?<=af?)b str: ab result_expr: $& expected_results b +03_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: cb result_expr: - expected_results - +04_n: OK regex: (?<=a(?:fo)?)b parsed_regex: (?<=a(?:fo)?)b str: cb result_expr: - expected_results - +05_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: b result_expr: - expected_results - +06_n: OK regex: (?<=a(?:foo)?)b parsed_regex: (?<=a(?:foo)?)b str: b result_expr: - expected_results - +07_y: OK regex: (?)foo parsed_regex: (?<=bar>)foo str: bar>foo result_expr: $& expected_results foo +50_n: OK regex: (?)foo parsed_regex: (?)foo str: bar>foo result_expr: - expected_results - +51_y: OK regex: (?<=bar>ABC)foo parsed_regex: (?<=bar>ABC)foo str: bar>ABCfoo result_expr: $& expected_results foo +52_n: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: - expected_results - +53_y: OK regex: (?<=abcd(?<=(aaaabcd))) parsed_regex: (?<=abcd(?<=(aaaabcd))) str: ..aaaabcd.. result_expr: $1 expected_results aaaabcd +54_y: OK regex: (?=xy(?<=(aaxy))) parsed_regex: (?=xy(?<=(aaxy))) str: ..aaxy.. result_expr: $1 expected_results aaxy +55_y: OK regex: (?=xy(?<=(aaxyz?))) parsed_regex: (?=xy(?<=(aaxyz?))) str: ..aaxy.. result_expr: $1 expected_results aaxy +56_y: OK regex: (?<=(?=(aaxy))aa) parsed_regex: (?<=(?=(aaxy))aa) str: ..aaxy.. result_expr: $1 expected_results aaxy + diff --git a/regression-tests/test-results/pure2-regex_20_lookbehind.cpp b/regression-tests/test-results/pure2-regex_20_lookbehind.cpp new file mode 100644 index 0000000000..674d9ada9a --- /dev/null +++ b/regression-tests/test-results/pure2-regex_20_lookbehind.cpp @@ -0,0 +1,8990 @@ + +#define CPP2_IMPORT_STD Yes +#include "cpp2regex.h" + +//=== Cpp2 type declarations ==================================================== + + +#include "cpp2util.h" + +#line 1 "pure2-regex_20_lookbehind.cpp2" + +#line 166 "pure2-regex_20_lookbehind.cpp2" +class test_tests_20_lookbehind; + + +//=== Cpp2 type definitions and function declarations =========================== + +#line 1 "pure2-regex_20_lookbehind.cpp2" +[[nodiscard]] auto create_result(cpp2::impl::in resultExpr, auto const& r) -> std::string; + +#line 113 "pure2-regex_20_lookbehind.cpp2" +[[nodiscard]] auto sanitize(std::string str) -> std::string; + +#line 125 "pure2-regex_20_lookbehind.cpp2" +template auto test(M const& regex, cpp2::impl::in id, cpp2::impl::in regex_str, cpp2::impl::in str, cpp2::impl::in kind, cpp2::impl::in resultExpr, + cpp2::impl::in resultExpected) -> void; + +#line 166 "pure2-regex_20_lookbehind.cpp2" +class test_tests_20_lookbehind { + +#line 223 "pure2-regex_20_lookbehind.cpp2" + public: auto run() const& -> void; + public: template class regex_01_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_01_matcher() = default; + public: regex_01_matcher(regex_01_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_01_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_01 {}; public: template class regex_02_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_02_matcher() = default; + public: regex_02_matcher(regex_02_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_02_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_02 {}; public: template class regex_03_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_03_matcher() = default; + public: regex_03_matcher(regex_03_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_03_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_03 {}; public: template class regex_04_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_04_matcher() = default; + public: regex_04_matcher(regex_04_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_04_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_04 {}; public: template class regex_05_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_05_matcher() = default; + public: regex_05_matcher(regex_05_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_05_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_05 {}; public: template class regex_06_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_06_matcher() = default; + public: regex_06_matcher(regex_06_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_06_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_06 {}; public: template class regex_07_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_07_matcher() = default; + public: regex_07_matcher(regex_07_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_07_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_07 {}; public: template class regex_08_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_08_matcher() = default; + public: regex_08_matcher(regex_08_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_08_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_08 {}; public: template class regex_09_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_09_matcher() = default; + public: regex_09_matcher(regex_09_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_09_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_09 {}; public: template class regex_10_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_10_matcher() = default; + public: regex_10_matcher(regex_10_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_10_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_10 {}; public: template class regex_11_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_11_matcher() = default; + public: regex_11_matcher(regex_11_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_11_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_11 {}; public: template class regex_12_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_12_matcher() = default; + public: regex_12_matcher(regex_12_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_12_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_12 {}; public: template class regex_13_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_13_matcher() = default; + public: regex_13_matcher(regex_13_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_13_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_13 {}; public: template class regex_14_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_14_matcher() = default; + public: regex_14_matcher(regex_14_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_14_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_14 {}; public: template class regex_15_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_15_matcher() = default; + public: regex_15_matcher(regex_15_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_15_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_15 {}; public: template class regex_16_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_16_matcher() = default; + public: regex_16_matcher(regex_16_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_16_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_16 {}; public: template class regex_17_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_17_matcher() = default; + public: regex_17_matcher(regex_17_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_17_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_17 {}; public: template class regex_18_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_18_matcher() = default; + public: regex_18_matcher(regex_18_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_18_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_18 {}; public: template class regex_19_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_19_matcher() = default; + public: regex_19_matcher(regex_19_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_19_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_19 {}; public: template class regex_20_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_20_matcher() = default; + public: regex_20_matcher(regex_20_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_20_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_20 {}; public: template class regex_21_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_21_matcher() = default; + public: regex_21_matcher(regex_21_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_21_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_21 {}; public: template class regex_22_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_22_matcher() = default; + public: regex_22_matcher(regex_22_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_22_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_22 {}; public: template class regex_23_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_23_matcher() = default; + public: regex_23_matcher(regex_23_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_23_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_23 {}; public: template class regex_24_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_24_matcher() = default; + public: regex_24_matcher(regex_24_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_24_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_24 {}; public: template class regex_25_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_25_matcher() = default; + public: regex_25_matcher(regex_25_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_25_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_25 {}; public: template class regex_26_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_26_matcher() = default; + public: regex_26_matcher(regex_26_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_26_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_26 {}; public: template class regex_27_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_5 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_6 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_27_matcher() = default; + public: regex_27_matcher(regex_27_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_27_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_27 {}; public: template class regex_28_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_5 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_6 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_28_matcher() = default; + public: regex_28_matcher(regex_28_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_28_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_28 {}; public: template class regex_29_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_5 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_6 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_29_matcher() = default; + public: regex_29_matcher(regex_29_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_29_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_29 {}; public: template class regex_30_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_5 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_6 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_30_matcher() = default; + public: regex_30_matcher(regex_30_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_30_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_30 {}; public: template class regex_31_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_31_matcher() = default; + public: regex_31_matcher(regex_31_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_31_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_31 {}; public: template class regex_32_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_32_matcher() = default; + public: regex_32_matcher(regex_32_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_32_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_32 {}; public: template class regex_33_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_33_matcher() = default; + public: regex_33_matcher(regex_33_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_33_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_33 {}; public: template class regex_34_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_34_matcher() = default; + public: regex_34_matcher(regex_34_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_34_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_34 {}; public: template class regex_35_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_35_matcher() = default; + public: regex_35_matcher(regex_35_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_35_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_35 {}; public: template class regex_36_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_5 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_6 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_36_matcher() = default; + public: regex_36_matcher(regex_36_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_36_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_36 {}; public: template class regex_37_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_5 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_6 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_37_matcher() = default; + public: regex_37_matcher(regex_37_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_37_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_37 {}; public: template class regex_38_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_5 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_6 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_38_matcher() = default; + public: regex_38_matcher(regex_38_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_38_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_38 {}; public: template class regex_39_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_5 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_6 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_39_matcher() = default; + public: regex_39_matcher(regex_39_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_39_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_39 {}; public: template class regex_40_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_40_matcher() = default; + public: regex_40_matcher(regex_40_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_40_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_40 {}; public: template class regex_41_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_41_matcher() = default; + public: regex_41_matcher(regex_41_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_41_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_41 {}; public: template class regex_42_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_42_matcher() = default; + public: regex_42_matcher(regex_42_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_42_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_42 {}; public: template class regex_43_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_43_matcher() = default; + public: regex_43_matcher(regex_43_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_43_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_43 {}; public: template class regex_44_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_44_matcher() = default; + public: regex_44_matcher(regex_44_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_44_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_44 {}; public: template class regex_45_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_45_matcher() = default; + public: regex_45_matcher(regex_45_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_45_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_45 {}; public: template class regex_46_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_46_matcher() = default; + public: regex_46_matcher(regex_46_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_46_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_46 {}; public: template class regex_47_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_47_matcher() = default; + public: regex_47_matcher(regex_47_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_47_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_47 {}; public: template class regex_48_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_48_matcher() = default; + public: regex_48_matcher(regex_48_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_48_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_48 {}; public: template class regex_49_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_49_matcher() = default; + public: regex_49_matcher(regex_49_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_49_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_49 {}; public: template class regex_50_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_50_matcher() = default; + public: regex_50_matcher(regex_50_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_50_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_50 {}; public: template class regex_51_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_51_matcher() = default; + public: regex_51_matcher(regex_51_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_51_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_51 {}; public: template class regex_52_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_52_matcher() = default; + public: regex_52_matcher(regex_52_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_52_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_52 {}; public: template class regex_53_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_53_matcher() = default; + public: regex_53_matcher(regex_53_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_53_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_53 {}; public: template class regex_54_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_54_matcher() = default; + public: regex_54_matcher(regex_54_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_54_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_54 {}; public: template class regex_55_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_3 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_4 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_55_matcher() = default; + public: regex_55_matcher(regex_55_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_55_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_55 {}; public: template class regex_56_matcher { + public: template using context = cpp2::regex::match_context; +public: class func_2 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_1 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: class func_0 { + public: template [[nodiscard]] auto operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return; + + }; + + public: template [[nodiscard]] static auto entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return; + + public: [[nodiscard]] static auto get_named_group_index(auto const& name) -> int; + + public: [[nodiscard]] constexpr static auto is_start_match() -> bool; +public: [[nodiscard]] static auto to_string() -> std::string; + + public: regex_56_matcher() = default; + public: regex_56_matcher(regex_56_matcher const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(regex_56_matcher const&) -> void = delete; + + }; + + public: cpp2::regex::regular_expression> regex_56 {}; + public: test_tests_20_lookbehind() = default; + public: test_tests_20_lookbehind(test_tests_20_lookbehind const&) = delete; /* No 'that' constructor, suppress copy */ + public: auto operator=(test_tests_20_lookbehind const&) -> void = delete; + + +#line 283 "pure2-regex_20_lookbehind.cpp2" +}; +auto main() -> int; + +//=== Cpp2 function definitions ================================================= + +#line 1 "pure2-regex_20_lookbehind.cpp2" +[[nodiscard]] auto create_result(cpp2::impl::in resultExpr, auto const& r) -> std::string{ +#line 2 "pure2-regex_20_lookbehind.cpp2" + std::string result {""}; + + auto get_next {[_0 = (&resultExpr)](auto const& iter) mutable -> auto{ + auto start {std::distance(CPP2_UFCS(cbegin)((*cpp2::impl::assert_not_null(_0))), iter)}; + auto firstDollar {CPP2_UFCS(find)((*cpp2::impl::assert_not_null(_0)), "$", start)}; + auto firstAt {CPP2_UFCS(find)((*cpp2::impl::assert_not_null(_0)), "@", cpp2::move(start))}; + + auto end {std::min(cpp2::move(firstDollar), cpp2::move(firstAt))}; + if (end != std::string::npos) { + return CPP2_UFCS(cbegin)((*cpp2::impl::assert_not_null(_0))) + cpp2::move(end); + } + else { + return CPP2_UFCS(cend)((*cpp2::impl::assert_not_null(_0))); + } + }}; + auto extract_group_and_advance {[](auto& iter) -> auto{ + auto start {iter}; + + for( ; std::isdigit(*cpp2::impl::assert_not_null(iter)); ++iter ) {} + + return std::stoi(std::string(cpp2::move(start), iter)); + }}; + auto extract_until {[](auto& iter, cpp2::impl::in to) -> auto{ + auto start {iter}; + + for( ; (to != *cpp2::impl::assert_not_null(iter)); ++iter ) {}// TODO: Without bracket: error: postfix unary * (dereference) cannot be immediately followed by a (, identifier, or literal - add whitespace before * here if you meant binary * (multiplication) + + return std::string(cpp2::move(start), iter); + }}; + + auto iter {CPP2_UFCS(begin)(resultExpr)}; + + while( iter != CPP2_UFCS(end)(resultExpr) ) { + auto next {get_next(iter)}; + + if (next != iter) { + result += std::string(iter, next); + } + if (next != CPP2_UFCS(end)(resultExpr)) { + if (*cpp2::impl::assert_not_null(next) == '$') { + ++next; + + if (*cpp2::impl::assert_not_null(next) == '&') { + ++next; + result += CPP2_UFCS(group)(r, 0); + } + else {if (*cpp2::impl::assert_not_null(next) == '-' || *cpp2::impl::assert_not_null(next) == '+') { + auto is_start {*cpp2::impl::assert_not_null(next) == '-'}; + ++next; + if (*cpp2::impl::assert_not_null(next) == '{') { + ++next; // Skip { + auto group {extract_until(next, '}')}; + ++next; // Skip } + result += CPP2_UFCS(group)(r, cpp2::move(group)); + } + else {if (*cpp2::impl::assert_not_null(next) == '[') { + ++next; // Skip [ + auto group {extract_group_and_advance(next)}; + ++next; // Skip ] + + if (cpp2::move(is_start)) { + result += std::to_string(CPP2_UFCS(group_start)(r, cpp2::move(group))); + } + else { + result += std::to_string(CPP2_UFCS(group_end)(r, cpp2::move(group))); + } + } + else { + // Return max group + result += CPP2_UFCS(group)(r, CPP2_UFCS(group_number)(r) - 1); + }} + } + else {if (std::isdigit(*cpp2::impl::assert_not_null(next))) { + auto group {extract_group_and_advance(next)}; + result += CPP2_UFCS(group)(r, cpp2::move(group)); + } + else { + std::cerr << "Not implemented"; + }}} + } + else {if (*cpp2::impl::assert_not_null(next) == '@') { + ++next; + + if (*cpp2::impl::assert_not_null(next) == '-' || *cpp2::impl::assert_not_null(next) == '+') { + auto i {0}; + for( ; cpp2::impl::cmp_less(i,cpp2::unchecked_narrow(CPP2_UFCS(group_number)(r))); ++i ) { + auto pos {0}; + if (*cpp2::impl::assert_not_null(next) == '-') { + pos = CPP2_UFCS(group_start)(r, i); + } + else { + pos = CPP2_UFCS(group_end)(r, i); + } + result += std::to_string(cpp2::move(pos)); + } + ++next; + } + else { + std::cerr << "Not implemented"; + } + } + else { + std::cerr << "Not implemented."; + }} + } + iter = cpp2::move(next); + } + + return result; +} + +#line 113 "pure2-regex_20_lookbehind.cpp2" +[[nodiscard]] auto sanitize(std::string str) -> std::string +{ + str = cpp2::string_util::replace_all(str, "\a", "\\a"); + str = cpp2::string_util::replace_all(str, "\f", "\\f"); + str = cpp2::string_util::replace_all(str, "\x1b", "\\e"); + str = cpp2::string_util::replace_all(str, "\n", "\\n"); + str = cpp2::string_util::replace_all(str, "\r", "\\r"); + str = cpp2::string_util::replace_all(str, "\t", "\\t"); + + return cpp2::move(str); +} + +#line 125 "pure2-regex_20_lookbehind.cpp2" +template auto test(M const& regex, cpp2::impl::in id, cpp2::impl::in regex_str, cpp2::impl::in str, cpp2::impl::in kind, cpp2::impl::in resultExpr, + cpp2::impl::in resultExpected) -> void{ + + std::string warning {""}; + if (CPP2_UFCS(to_string)(regex) != regex_str) { + warning = "Warning: Parsed regex does not match."; + } + + std::string status {"OK"}; + + auto r {CPP2_UFCS(search)(regex, str)}; + + if ("y" == kind || "yM" == kind || "yS" == kind || "yB" == kind) { + if (!(r.matched)) { + status = "Failure: Regex should apply."; + } + else { + // Have a match check the result + + auto result {create_result(resultExpr, cpp2::move(r))}; + + if (result != resultExpected) { + status = "Failure: Result is wrong. (is: " + cpp2::to_string(sanitize(cpp2::move(result))) + ")"; + } + } + } + else {if ("n" == kind) { + if (r.matched) { + status = "Failure: Regex should not apply. Result is '" + cpp2::to_string(CPP2_UFCS(group)(cpp2::move(r), 0)) + "'"; + } + }else { + status = "Unknown kind '" + cpp2::to_string(kind) + "'"; + }} + + if (!(CPP2_UFCS(empty)(warning))) { + warning += " "; + } + std::cout << "" + cpp2::to_string(id) + "_" + cpp2::to_string(kind) + ": " + cpp2::to_string(cpp2::move(status)) + " " + cpp2::to_string(cpp2::move(warning)) + "regex: " + cpp2::to_string(regex_str) + " parsed_regex: " + cpp2::to_string(CPP2_UFCS(to_string)(regex)) + " str: " + cpp2::to_string(sanitize(str)) + " result_expr: " + cpp2::to_string(resultExpr) + " expected_results " + cpp2::to_string(sanitize(resultExpected)) + "" << std::endl; +} + +#line 223 "pure2-regex_20_lookbehind.cpp2" + auto test_tests_20_lookbehind::run() const& -> void{ + std::cout << "Running tests_20_lookbehind:" << std::endl; + test(regex_01, "01", R"((?<=a)b)", "ab", "y", R"($&)", "b"); + test(regex_02, "02", R"((?<=af?)b)", "ab", "y", R"($&)", "b"); + test(regex_03, "03", R"((?<=a)b)", "cb", "n", R"(-)", "-"); + test(regex_04, "04", R"((?<=a(?:fo)?)b)", "cb", "n", R"(-)", "-"); + test(regex_05, "05", R"((?<=a)b)", "b", "n", R"(-)", "-"); + test(regex_06, "06", R"((?<=a(?:foo)?)b)", "b", "n", R"(-)", "-"); + test(regex_07, "07", R"((?)foo)", "bar>foo", "y", R"($&)", "foo"); + test(regex_50, "50", R"((?)foo)", "bar>foo", "n", R"(-)", "-"); + test(regex_51, "51", R"((?<=bar>ABC)foo)", "bar>ABCfoo", "y", R"($&)", "foo"); + test(regex_52, "52", R"((?ABC)foo)", "bar>ABCfoo", "n", R"(-)", "-"); + test(regex_53, "53", R"((?<=abcd(?<=(aaaabcd))))", "..aaaabcd..", "y", R"($1)", "aaaabcd"); + test(regex_54, "54", R"((?=xy(?<=(aaxy))))", "..aaxy..", "y", R"($1)", "aaxy"); + test(regex_55, "55", R"((?=xy(?<=(aaxyz?))))", "..aaxy..", "y", R"($1)", "aaxy"); + test(regex_56, "56", R"((?<=(?=(aaxy))aa))", "..aaxy..", "y", R"($1)", "aaxy"); + std::cout << std::endl; + } + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"a"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_01_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_01_matcher::to_string() -> std::string{return R"((?<=a)b)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"f"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"a"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_02_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_02_matcher::to_string() -> std::string{return R"((?<=af?)b)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"a"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_03_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_03_matcher::to_string() -> std::string{return R"((?<=a)b)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"of"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 2;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"a"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_04_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_04_matcher::to_string() -> std::string{return R"((?<=a(?:fo)?)b)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"a"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_05_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_05_matcher::to_string() -> std::string{return R"((?<=a)b)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"oof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"a"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_06_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_06_matcher::to_string() -> std::string{return R"((?<=a(?:foo)?)b)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_07_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_07_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"boof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 4;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_08_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_08_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_09_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_09_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"aboof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),5)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,5); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 5;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_10_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_10_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_11_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_11_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"raboof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),6)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,6); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 6;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_12_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_12_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_13_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_13_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"braboof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),7)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,7); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 7;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_14_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_14_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_0 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_15_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_15_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"e"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_16_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_16_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_17_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_17_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_18_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_18_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_2(), cpp2::regex::no_reset(), other, func_3()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_19_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_19_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"d"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_4(), func_2(), cpp2::regex::no_reset(), func_3(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + + auto tmp_2_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_2 {cpp2::regex::make_on_return(cpp2::move(tmp_2_func))}; + static_cast(cpp2::move(tmp_2)); + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_3 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_20_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_20_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"d"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_4(), func_2(), cpp2::regex::no_reset(), func_3(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + + auto tmp_2_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_2 {cpp2::regex::make_on_return(cpp2::move(tmp_2_func))}; + static_cast(cpp2::move(tmp_2)); + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_21_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_21_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"dc"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 2;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_22_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_22_matcher::to_string() -> std::string{return R"((? template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + std::array str_tmp_0 {"a"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + ctx.set_group_start(1, r.pos); + + auto tmp_1_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_1 {cpp2::regex::make_on_return(cpp2::move(tmp_1_func))}; + static_cast(cpp2::move(tmp_1)); + if (!(cpp2::regex::line_start_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::line_end_token_matcher(r.pos, ctx))) {r.matched = false;break;} + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_23_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_23_matcher::to_string() -> std::string{return R"($(?<=^(a)))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_24_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_24_matcher::to_string() -> std::string{return R"((.*)c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_25_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_25_matcher::to_string() -> std::string{return R"((.*)(?<=b))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + + std::array str_tmp_2 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_26_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_26_matcher::to_string() -> std::string{return R"((.*)(?<=b)c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_2 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_27_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_27_matcher::to_string() -> std::string{return R"((.*)(?<=b|c))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_2 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + + std::array str_tmp_3 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_28_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_28_matcher::to_string() -> std::string{return R"((.*)(?<=b|c)c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_29_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_29_matcher::to_string() -> std::string{return R"((.*)(?<=c|b))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + + std::array str_tmp_3 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_30_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_30_matcher::to_string() -> std::string{return R"((.*)(?<=c|b)c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_31_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_31_matcher::to_string() -> std::string{return R"((.*)(?<=[bc]))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_32_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_32_matcher::to_string() -> std::string{return R"((.*)(?<=[bc])c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_33_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_33_matcher::to_string() -> std::string{return R"((.*?)c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_34_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_34_matcher::to_string() -> std::string{return R"((.*?)(?<=b))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + + std::array str_tmp_2 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_35_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_35_matcher::to_string() -> std::string{return R"((.*?)(?<=b)c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_2 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_36_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_36_matcher::to_string() -> std::string{return R"((.*?)(?<=b|c))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_2 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + + std::array str_tmp_3 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_37_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_37_matcher::to_string() -> std::string{return R"((.*?)(?<=b|c)c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_38_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_38_matcher::to_string() -> std::string{return R"((.*?)(?<=c|b))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_5::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_2 {"b"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::alternative_token_matcher::match(r.pos, ctx, other, func_6(), func_4(), cpp2::regex::no_reset(), func_5(), cpp2::regex::no_reset()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_6::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + + std::array str_tmp_3 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_3, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_39_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_39_matcher::to_string() -> std::string{return R"((.*?)(?<=c|b)c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_40_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_40_matcher::to_string() -> std::string{return R"((.*?)(?<=[bc]))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + auto tmp_0_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_0 {cpp2::regex::make_on_return(cpp2::move(tmp_0_func))}; + static_cast(cpp2::move(tmp_0)); + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + + std::array str_tmp_1 {"c"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_41_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_41_matcher::to_string() -> std::string{return R"((.*?)(?<=[bc])c)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"oof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_42_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_42_matcher::to_string() -> std::string{return R"((?<=foo))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"oof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_43_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_43_matcher::to_string() -> std::string{return R"((?<=foo))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"oof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_44_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_44_matcher::to_string() -> std::string{return R"(.*(?<=foo))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_1(), cpp2::regex::no_reset(), other, func_2()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"oof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_3()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_45_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_45_matcher::to_string() -> std::string{return R"(.*(?<=foo))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"oof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"Y"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_46_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_46_matcher::to_string() -> std::string{return R"((?<=foo)Y)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"oof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"o"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_2 {"Y"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_47_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_47_matcher::to_string() -> std::string{return R"(o(?<=foo)Y)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::any_token_matcher(r.pos, ctx))) {r.matched = false;break;} + + std::array str_tmp_1 {"oof"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"X"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + if (!(cpp2::regex::class_token_matcher,::cpp2::regex::single_class_entry>::match(r.pos, ctx))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_48_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_48_matcher::to_string() -> std::string{return R"(X(?<=foo.)[YZ])"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {">rab"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 4;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"foo"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_49_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_49_matcher::to_string() -> std::string{return R"((?<=bar>)foo)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {">rab"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 4;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"foo"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_50_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_50_matcher::to_string() -> std::string{return R"((?)foo)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"CBA>rab"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),7)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,7); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 7;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"foo"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_51_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_51_matcher::to_string() -> std::string{return R"((?<=bar>ABC)foo)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"CBA>rab"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),7)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,7); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 7;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + + std::array str_tmp_1 {"foo"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),3)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,3); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 3;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_52_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_52_matcher::to_string() -> std::string{return R"((?ABC)foo)"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + std::array str_tmp_0 {"dcbaaaa"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),7)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,7); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 7;} + else {break;} + ctx.set_group_start(1, r.pos); + + auto tmp_1_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_1 {cpp2::regex::make_on_return(cpp2::move(tmp_1_func))}; + static_cast(cpp2::move(tmp_1)); + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_2()))) {r.matched = false;break;} + + std::array str_tmp_2 {"dcba"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 4;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_53_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_53_matcher::to_string() -> std::string{return R"((?<=abcd(?<=(aaaabcd))))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + + std::array str_tmp_1 {"yxaa"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 4;} + else {break;} + ctx.set_group_start(1, r.pos); + + auto tmp_2_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_2 {cpp2::regex::make_on_return(cpp2::move(tmp_2_func))}; + static_cast(cpp2::move(tmp_2)); + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"xy"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 2;} + else {break;} + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_2()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookahead_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_54_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_54_matcher::to_string() -> std::string{return R"((?=xy(?<=(aaxy))))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_3::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_1 {"z"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),1)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,1); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 1;} + else {break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_end(1, r.pos); + } + while ( + false + ); + if (r.matched) { + r = cpp2::regex::range_token_matcher::match(r.pos, ctx, func_3(), cpp2::regex::no_reset(), other, func_4()); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_4::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_2 {"yxaa"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_2, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 4;} + else {break;} + ctx.set_group_start(1, r.pos); + + auto tmp_3_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_3 {cpp2::regex::make_on_return(cpp2::move(tmp_3_func))}; + static_cast(cpp2::move(tmp_3)); + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"xy"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 2;} + else {break;} + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_2()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookahead_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_55_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_55_matcher::to_string() -> std::string{return R"((?=xy(?<=(aaxyz?))))"; } + + + + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::func_2::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + ctx.set_group_start(1, r.pos); + + std::array str_tmp_1 {"aaxy"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),4)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,4); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_1, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 4;} + else {break;} + ctx.set_group_end(1, r.pos); + + auto tmp_2_func { +[&, _1 = (&r), _2 = (&ctx)]() mutable -> void{ + if (!((*cpp2::impl::assert_not_null(_1)).matched)) { + (*cpp2::impl::assert_not_null(_2)).set_group_invalid(1); + } + } + }; + + auto tmp_2 {cpp2::regex::make_on_return(cpp2::move(tmp_2_func))}; + static_cast(cpp2::move(tmp_2)); + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::func_1::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + + std::array str_tmp_0 {"aa"}; + if (cpp2::impl::cmp_less(std::distance(r.pos, ctx.end),2)) { + r.matched = false; + break; + } +{ +int i{0}; + for( ; cpp2::impl::cmp_less(i,2); (i += 1) ) { + if (CPP2_ASSERT_IN_BOUNDS(str_tmp_0, i) != CPP2_ASSERT_IN_BOUNDS(r.pos, i)) {r.matched = false;} + } +} + if (r.matched) {r.pos += 2;} + else {break;} + if (!(cpp2::regex::lookahead_token_matcher(r.pos, ctx, func_2()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::func_0::operator()(Iter const& cur, auto&& ctx, auto const& other) const& -> cpp2::regex::match_return{ + + auto r {ctx.pass(cur)}; + do { + if (!(cpp2::regex::lookbehind_token_matcher(r.pos, ctx, func_1()))) {r.matched = false;break;} + } + while ( + false + ); + if (r.matched) { + r = other(r.pos, ctx); + } + else { + r.pos = ctx.end; + } + static_cast(CPP2_FORWARD(ctx)); + return r; + } + + template template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::entry(Iter const& cur, context& ctx) -> cpp2::regex::match_return{ + ctx.set_group_start(0, cur); + + auto r {func_0()(cur, ctx, cpp2::regex::true_end_func())}; + if (r.matched) {ctx.set_group_end(0, r.pos);} + return r; + } + + template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::get_named_group_index(auto const& name) -> int{ + static_cast(name); + return -1; + } + + template [[nodiscard]] constexpr auto test_tests_20_lookbehind::regex_56_matcher::is_start_match() -> bool { return false; } +template [[nodiscard]] auto test_tests_20_lookbehind::regex_56_matcher::to_string() -> std::string{return R"((?<=(?=(aaxy))aa))"; } + + +#line 284 "pure2-regex_20_lookbehind.cpp2" +auto main() -> int{ + CPP2_UFCS(run)(test_tests_20_lookbehind()); +} + diff --git a/regression-tests/test-results/pure2-regex_20_lookbehind.cpp2.output b/regression-tests/test-results/pure2-regex_20_lookbehind.cpp2.output new file mode 100644 index 0000000000..4bb5f42590 --- /dev/null +++ b/regression-tests/test-results/pure2-regex_20_lookbehind.cpp2.output @@ -0,0 +1,2 @@ +pure2-regex_20_lookbehind.cpp2... ok (all Cpp2, passes safety checks) + From 6cef15c51c0024606ac38e341b33e7407c33e526 Mon Sep 17 00:00:00 2001 From: Max Sagebaum Date: Fri, 8 Aug 2025 11:54:16 +0200 Subject: [PATCH 4/4] Results files from ci for other compilers. --- .../pure2-regex_20_lookbehind.cpp.execution | 58 +++++++++++++++++++ .../pure2-regex_20_lookbehind.cpp.execution | 58 +++++++++++++++++++ .../pure2-regex_20_lookbehind.cpp.execution | 58 +++++++++++++++++++ .../pure2-regex_20_lookbehind.cpp.execution | 58 +++++++++++++++++++ .../pure2-regex_20_lookbehind.cpp.execution | 58 +++++++++++++++++++ .../pure2-regex_20_lookbehind.cpp.execution | 58 +++++++++++++++++++ .../pure2-regex_20_lookbehind.cpp.execution | 58 +++++++++++++++++++ 7 files changed, 406 insertions(+) create mode 100644 regression-tests/test-results/apple-clang-14-c++2b/pure2-regex_20_lookbehind.cpp.execution create mode 100644 regression-tests/test-results/apple-clang-15-c++2b/pure2-regex_20_lookbehind.cpp.execution create mode 100644 regression-tests/test-results/clang-15-c++20-libcpp/pure2-regex_20_lookbehind.cpp.execution create mode 100644 regression-tests/test-results/clang-15-c++20/pure2-regex_20_lookbehind.cpp.execution create mode 100644 regression-tests/test-results/clang-19-c++20/pure2-regex_20_lookbehind.cpp.execution create mode 100644 regression-tests/test-results/clang-19-c++23-libcpp/pure2-regex_20_lookbehind.cpp.execution create mode 100644 regression-tests/test-results/gcc-14-c++2b/pure2-regex_20_lookbehind.cpp.execution diff --git a/regression-tests/test-results/apple-clang-14-c++2b/pure2-regex_20_lookbehind.cpp.execution b/regression-tests/test-results/apple-clang-14-c++2b/pure2-regex_20_lookbehind.cpp.execution new file mode 100644 index 0000000000..cd61d4f563 --- /dev/null +++ b/regression-tests/test-results/apple-clang-14-c++2b/pure2-regex_20_lookbehind.cpp.execution @@ -0,0 +1,58 @@ +Running tests_20_lookbehind: +01_y: OK regex: (?<=a)b parsed_regex: (?<=a)b str: ab result_expr: $& expected_results b +02_y: OK regex: (?<=af?)b parsed_regex: (?<=af?)b str: ab result_expr: $& expected_results b +03_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: cb result_expr: - expected_results - +04_n: OK regex: (?<=a(?:fo)?)b parsed_regex: (?<=a(?:fo)?)b str: cb result_expr: - expected_results - +05_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: b result_expr: - expected_results - +06_n: OK regex: (?<=a(?:foo)?)b parsed_regex: (?<=a(?:foo)?)b str: b result_expr: - expected_results - +07_y: OK regex: (?)foo parsed_regex: (?<=bar>)foo str: bar>foo result_expr: $& expected_results foo +50_n: OK regex: (?)foo parsed_regex: (?)foo str: bar>foo result_expr: - expected_results - +51_y: OK regex: (?<=bar>ABC)foo parsed_regex: (?<=bar>ABC)foo str: bar>ABCfoo result_expr: $& expected_results foo +52_n: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: - expected_results - +53_y: OK regex: (?<=abcd(?<=(aaaabcd))) parsed_regex: (?<=abcd(?<=(aaaabcd))) str: ..aaaabcd.. result_expr: $1 expected_results aaaabcd +54_y: OK regex: (?=xy(?<=(aaxy))) parsed_regex: (?=xy(?<=(aaxy))) str: ..aaxy.. result_expr: $1 expected_results aaxy +55_y: OK regex: (?=xy(?<=(aaxyz?))) parsed_regex: (?=xy(?<=(aaxyz?))) str: ..aaxy.. result_expr: $1 expected_results aaxy +56_y: OK regex: (?<=(?=(aaxy))aa) parsed_regex: (?<=(?=(aaxy))aa) str: ..aaxy.. result_expr: $1 expected_results aaxy + diff --git a/regression-tests/test-results/apple-clang-15-c++2b/pure2-regex_20_lookbehind.cpp.execution b/regression-tests/test-results/apple-clang-15-c++2b/pure2-regex_20_lookbehind.cpp.execution new file mode 100644 index 0000000000..cd61d4f563 --- /dev/null +++ b/regression-tests/test-results/apple-clang-15-c++2b/pure2-regex_20_lookbehind.cpp.execution @@ -0,0 +1,58 @@ +Running tests_20_lookbehind: +01_y: OK regex: (?<=a)b parsed_regex: (?<=a)b str: ab result_expr: $& expected_results b +02_y: OK regex: (?<=af?)b parsed_regex: (?<=af?)b str: ab result_expr: $& expected_results b +03_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: cb result_expr: - expected_results - +04_n: OK regex: (?<=a(?:fo)?)b parsed_regex: (?<=a(?:fo)?)b str: cb result_expr: - expected_results - +05_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: b result_expr: - expected_results - +06_n: OK regex: (?<=a(?:foo)?)b parsed_regex: (?<=a(?:foo)?)b str: b result_expr: - expected_results - +07_y: OK regex: (?)foo parsed_regex: (?<=bar>)foo str: bar>foo result_expr: $& expected_results foo +50_n: OK regex: (?)foo parsed_regex: (?)foo str: bar>foo result_expr: - expected_results - +51_y: OK regex: (?<=bar>ABC)foo parsed_regex: (?<=bar>ABC)foo str: bar>ABCfoo result_expr: $& expected_results foo +52_n: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: - expected_results - +53_y: OK regex: (?<=abcd(?<=(aaaabcd))) parsed_regex: (?<=abcd(?<=(aaaabcd))) str: ..aaaabcd.. result_expr: $1 expected_results aaaabcd +54_y: OK regex: (?=xy(?<=(aaxy))) parsed_regex: (?=xy(?<=(aaxy))) str: ..aaxy.. result_expr: $1 expected_results aaxy +55_y: OK regex: (?=xy(?<=(aaxyz?))) parsed_regex: (?=xy(?<=(aaxyz?))) str: ..aaxy.. result_expr: $1 expected_results aaxy +56_y: OK regex: (?<=(?=(aaxy))aa) parsed_regex: (?<=(?=(aaxy))aa) str: ..aaxy.. result_expr: $1 expected_results aaxy + diff --git a/regression-tests/test-results/clang-15-c++20-libcpp/pure2-regex_20_lookbehind.cpp.execution b/regression-tests/test-results/clang-15-c++20-libcpp/pure2-regex_20_lookbehind.cpp.execution new file mode 100644 index 0000000000..cd61d4f563 --- /dev/null +++ b/regression-tests/test-results/clang-15-c++20-libcpp/pure2-regex_20_lookbehind.cpp.execution @@ -0,0 +1,58 @@ +Running tests_20_lookbehind: +01_y: OK regex: (?<=a)b parsed_regex: (?<=a)b str: ab result_expr: $& expected_results b +02_y: OK regex: (?<=af?)b parsed_regex: (?<=af?)b str: ab result_expr: $& expected_results b +03_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: cb result_expr: - expected_results - +04_n: OK regex: (?<=a(?:fo)?)b parsed_regex: (?<=a(?:fo)?)b str: cb result_expr: - expected_results - +05_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: b result_expr: - expected_results - +06_n: OK regex: (?<=a(?:foo)?)b parsed_regex: (?<=a(?:foo)?)b str: b result_expr: - expected_results - +07_y: OK regex: (?)foo parsed_regex: (?<=bar>)foo str: bar>foo result_expr: $& expected_results foo +50_n: OK regex: (?)foo parsed_regex: (?)foo str: bar>foo result_expr: - expected_results - +51_y: OK regex: (?<=bar>ABC)foo parsed_regex: (?<=bar>ABC)foo str: bar>ABCfoo result_expr: $& expected_results foo +52_n: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: - expected_results - +53_y: OK regex: (?<=abcd(?<=(aaaabcd))) parsed_regex: (?<=abcd(?<=(aaaabcd))) str: ..aaaabcd.. result_expr: $1 expected_results aaaabcd +54_y: OK regex: (?=xy(?<=(aaxy))) parsed_regex: (?=xy(?<=(aaxy))) str: ..aaxy.. result_expr: $1 expected_results aaxy +55_y: OK regex: (?=xy(?<=(aaxyz?))) parsed_regex: (?=xy(?<=(aaxyz?))) str: ..aaxy.. result_expr: $1 expected_results aaxy +56_y: OK regex: (?<=(?=(aaxy))aa) parsed_regex: (?<=(?=(aaxy))aa) str: ..aaxy.. result_expr: $1 expected_results aaxy + diff --git a/regression-tests/test-results/clang-15-c++20/pure2-regex_20_lookbehind.cpp.execution b/regression-tests/test-results/clang-15-c++20/pure2-regex_20_lookbehind.cpp.execution new file mode 100644 index 0000000000..cd61d4f563 --- /dev/null +++ b/regression-tests/test-results/clang-15-c++20/pure2-regex_20_lookbehind.cpp.execution @@ -0,0 +1,58 @@ +Running tests_20_lookbehind: +01_y: OK regex: (?<=a)b parsed_regex: (?<=a)b str: ab result_expr: $& expected_results b +02_y: OK regex: (?<=af?)b parsed_regex: (?<=af?)b str: ab result_expr: $& expected_results b +03_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: cb result_expr: - expected_results - +04_n: OK regex: (?<=a(?:fo)?)b parsed_regex: (?<=a(?:fo)?)b str: cb result_expr: - expected_results - +05_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: b result_expr: - expected_results - +06_n: OK regex: (?<=a(?:foo)?)b parsed_regex: (?<=a(?:foo)?)b str: b result_expr: - expected_results - +07_y: OK regex: (?)foo parsed_regex: (?<=bar>)foo str: bar>foo result_expr: $& expected_results foo +50_n: OK regex: (?)foo parsed_regex: (?)foo str: bar>foo result_expr: - expected_results - +51_y: OK regex: (?<=bar>ABC)foo parsed_regex: (?<=bar>ABC)foo str: bar>ABCfoo result_expr: $& expected_results foo +52_n: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: - expected_results - +53_y: OK regex: (?<=abcd(?<=(aaaabcd))) parsed_regex: (?<=abcd(?<=(aaaabcd))) str: ..aaaabcd.. result_expr: $1 expected_results aaaabcd +54_y: OK regex: (?=xy(?<=(aaxy))) parsed_regex: (?=xy(?<=(aaxy))) str: ..aaxy.. result_expr: $1 expected_results aaxy +55_y: OK regex: (?=xy(?<=(aaxyz?))) parsed_regex: (?=xy(?<=(aaxyz?))) str: ..aaxy.. result_expr: $1 expected_results aaxy +56_y: OK regex: (?<=(?=(aaxy))aa) parsed_regex: (?<=(?=(aaxy))aa) str: ..aaxy.. result_expr: $1 expected_results aaxy + diff --git a/regression-tests/test-results/clang-19-c++20/pure2-regex_20_lookbehind.cpp.execution b/regression-tests/test-results/clang-19-c++20/pure2-regex_20_lookbehind.cpp.execution new file mode 100644 index 0000000000..cd61d4f563 --- /dev/null +++ b/regression-tests/test-results/clang-19-c++20/pure2-regex_20_lookbehind.cpp.execution @@ -0,0 +1,58 @@ +Running tests_20_lookbehind: +01_y: OK regex: (?<=a)b parsed_regex: (?<=a)b str: ab result_expr: $& expected_results b +02_y: OK regex: (?<=af?)b parsed_regex: (?<=af?)b str: ab result_expr: $& expected_results b +03_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: cb result_expr: - expected_results - +04_n: OK regex: (?<=a(?:fo)?)b parsed_regex: (?<=a(?:fo)?)b str: cb result_expr: - expected_results - +05_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: b result_expr: - expected_results - +06_n: OK regex: (?<=a(?:foo)?)b parsed_regex: (?<=a(?:foo)?)b str: b result_expr: - expected_results - +07_y: OK regex: (?)foo parsed_regex: (?<=bar>)foo str: bar>foo result_expr: $& expected_results foo +50_n: OK regex: (?)foo parsed_regex: (?)foo str: bar>foo result_expr: - expected_results - +51_y: OK regex: (?<=bar>ABC)foo parsed_regex: (?<=bar>ABC)foo str: bar>ABCfoo result_expr: $& expected_results foo +52_n: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: - expected_results - +53_y: OK regex: (?<=abcd(?<=(aaaabcd))) parsed_regex: (?<=abcd(?<=(aaaabcd))) str: ..aaaabcd.. result_expr: $1 expected_results aaaabcd +54_y: OK regex: (?=xy(?<=(aaxy))) parsed_regex: (?=xy(?<=(aaxy))) str: ..aaxy.. result_expr: $1 expected_results aaxy +55_y: OK regex: (?=xy(?<=(aaxyz?))) parsed_regex: (?=xy(?<=(aaxyz?))) str: ..aaxy.. result_expr: $1 expected_results aaxy +56_y: OK regex: (?<=(?=(aaxy))aa) parsed_regex: (?<=(?=(aaxy))aa) str: ..aaxy.. result_expr: $1 expected_results aaxy + diff --git a/regression-tests/test-results/clang-19-c++23-libcpp/pure2-regex_20_lookbehind.cpp.execution b/regression-tests/test-results/clang-19-c++23-libcpp/pure2-regex_20_lookbehind.cpp.execution new file mode 100644 index 0000000000..cd61d4f563 --- /dev/null +++ b/regression-tests/test-results/clang-19-c++23-libcpp/pure2-regex_20_lookbehind.cpp.execution @@ -0,0 +1,58 @@ +Running tests_20_lookbehind: +01_y: OK regex: (?<=a)b parsed_regex: (?<=a)b str: ab result_expr: $& expected_results b +02_y: OK regex: (?<=af?)b parsed_regex: (?<=af?)b str: ab result_expr: $& expected_results b +03_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: cb result_expr: - expected_results - +04_n: OK regex: (?<=a(?:fo)?)b parsed_regex: (?<=a(?:fo)?)b str: cb result_expr: - expected_results - +05_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: b result_expr: - expected_results - +06_n: OK regex: (?<=a(?:foo)?)b parsed_regex: (?<=a(?:foo)?)b str: b result_expr: - expected_results - +07_y: OK regex: (?)foo parsed_regex: (?<=bar>)foo str: bar>foo result_expr: $& expected_results foo +50_n: OK regex: (?)foo parsed_regex: (?)foo str: bar>foo result_expr: - expected_results - +51_y: OK regex: (?<=bar>ABC)foo parsed_regex: (?<=bar>ABC)foo str: bar>ABCfoo result_expr: $& expected_results foo +52_n: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: - expected_results - +53_y: OK regex: (?<=abcd(?<=(aaaabcd))) parsed_regex: (?<=abcd(?<=(aaaabcd))) str: ..aaaabcd.. result_expr: $1 expected_results aaaabcd +54_y: OK regex: (?=xy(?<=(aaxy))) parsed_regex: (?=xy(?<=(aaxy))) str: ..aaxy.. result_expr: $1 expected_results aaxy +55_y: OK regex: (?=xy(?<=(aaxyz?))) parsed_regex: (?=xy(?<=(aaxyz?))) str: ..aaxy.. result_expr: $1 expected_results aaxy +56_y: OK regex: (?<=(?=(aaxy))aa) parsed_regex: (?<=(?=(aaxy))aa) str: ..aaxy.. result_expr: $1 expected_results aaxy + diff --git a/regression-tests/test-results/gcc-14-c++2b/pure2-regex_20_lookbehind.cpp.execution b/regression-tests/test-results/gcc-14-c++2b/pure2-regex_20_lookbehind.cpp.execution new file mode 100644 index 0000000000..cd61d4f563 --- /dev/null +++ b/regression-tests/test-results/gcc-14-c++2b/pure2-regex_20_lookbehind.cpp.execution @@ -0,0 +1,58 @@ +Running tests_20_lookbehind: +01_y: OK regex: (?<=a)b parsed_regex: (?<=a)b str: ab result_expr: $& expected_results b +02_y: OK regex: (?<=af?)b parsed_regex: (?<=af?)b str: ab result_expr: $& expected_results b +03_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: cb result_expr: - expected_results - +04_n: OK regex: (?<=a(?:fo)?)b parsed_regex: (?<=a(?:fo)?)b str: cb result_expr: - expected_results - +05_n: OK regex: (?<=a)b parsed_regex: (?<=a)b str: b result_expr: - expected_results - +06_n: OK regex: (?<=a(?:foo)?)b parsed_regex: (?<=a(?:foo)?)b str: b result_expr: - expected_results - +07_y: OK regex: (?)foo parsed_regex: (?<=bar>)foo str: bar>foo result_expr: $& expected_results foo +50_n: OK regex: (?)foo parsed_regex: (?)foo str: bar>foo result_expr: - expected_results - +51_y: OK regex: (?<=bar>ABC)foo parsed_regex: (?<=bar>ABC)foo str: bar>ABCfoo result_expr: $& expected_results foo +52_n: OK regex: (?ABC)foo parsed_regex: (?ABC)foo str: bar>ABCfoo result_expr: - expected_results - +53_y: OK regex: (?<=abcd(?<=(aaaabcd))) parsed_regex: (?<=abcd(?<=(aaaabcd))) str: ..aaaabcd.. result_expr: $1 expected_results aaaabcd +54_y: OK regex: (?=xy(?<=(aaxy))) parsed_regex: (?=xy(?<=(aaxy))) str: ..aaxy.. result_expr: $1 expected_results aaxy +55_y: OK regex: (?=xy(?<=(aaxyz?))) parsed_regex: (?=xy(?<=(aaxyz?))) str: ..aaxy.. result_expr: $1 expected_results aaxy +56_y: OK regex: (?<=(?=(aaxy))aa) parsed_regex: (?<=(?=(aaxy))aa) str: ..aaxy.. result_expr: $1 expected_results aaxy +