File: mode.cpp

package info (click to toggle)
ctre 3.9.0%2Bds-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 5,084 kB
  • sloc: cpp: 80,452; makefile: 135; javascript: 69; python: 31
file content (46 lines) | stat: -rw-r--r-- 1,191 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <ctre.hpp>

void empty_symbol() { }

using namespace ctre::test_literals;

#if !CTRE_CNTTP_COMPILER_CHECK
#define CTRE_TEST(pattern) (pattern ## _ctre_test)
#else

template <typename...> struct identify_me;

template <ctll::fixed_string input> constexpr bool test() {
	constexpr auto _input = input;

	using tmp = typename ctll::parser<ctre::pcre, _input, ctre::pcre_actions>::template output<ctre::pcre_context<>>;
	//static_assert(tmp(), "Regular Expression contains syntax error.");
	//using re = decltype(front(typename tmp::output_type::stack_type()));
	//identify_me<typename tmp::output_type::stack_type> i;
	////return ctre::regular_expression(re());
	return tmp();
}

#define CTRE_TEST(pattern) test<pattern>()
#endif


// basics
static_assert(!CTRE_TEST("(?)"));
static_assert(CTRE_TEST("(?i)"));
static_assert(CTRE_TEST("(?ic)"));
static_assert(CTRE_TEST("(?icsm)"));

// after
static_assert(CTRE_TEST("(?i)x"));
static_assert(CTRE_TEST("(?ic)x"));
static_assert(CTRE_TEST("(?icsm)x"));

// before
static_assert(CTRE_TEST("y(?i)"));
static_assert(CTRE_TEST("y(?ic)"));
static_assert(CTRE_TEST("y(?icsm)"));

static_assert(CTRE_TEST("(?i)Tom|Sawyer|Huckleberry|Finn"));