78 d = 0x4c62066400000500,
79 D = 0x4c62066400000501,
80 w = 0x4c62066400000502,
81 W = 0x4c62066400000503,
82 s = 0x4c62066400000504,
83 S = 0x4c62066400000505,
131#define THORIN_regex_NORMALIZER_IMPL \
132 void register_normalizers(Normalizers& normalizers) {\
133 normalizers[flags_t(Annex::Base<conj>)] = &normalize_conj; \
134 normalizers[flags_t(Annex::Base<disj>)] = &normalize_disj; \
135 normalizers[flags_t(Annex::Base<range>)] = &normalize_range; \
136 normalizers[flags_t(Annex::Base<not_>)] = &normalize_not; \
137 normalizers[flags_t(quant::optional)] = &normalize_quant<quant::optional>; \
138 normalizers[flags_t(quant::star)] = &normalize_quant<quant::star>; \
139 normalizers[flags_t(quant::plus)] = &normalize_quant<quant::plus>; \
163template<>
struct Axiom::Match<plug::
regex::lit> {
using type =
Axiom; };
164template<>
struct Axiom::Match<plug::
regex::cls> {
using type =
Axiom; };
Helper class to retrieve Infer::arg if present.
static constexpr plugin_t Plugin_Id
void register_normalizers(Normalizers &normalizers)
Ref normalize_not(Ref type, Ref callee, Ref arg)
Ref normalize_disj(Ref type, Ref, Ref arg)
Ref normalize_quant(Ref type, Ref callee, Ref arg)
Ref normalize_conj(Ref type, Ref callee, Ref arg)
Ref normalize_range(Ref type, Ref callee, Ref arg)
absl::flat_hash_map< flags_t, NormalizeFn > Normalizers
static constexpr flags_t Base
#define THORIN_ENUM_OPERATORS(E)
Use this to declare all kind of bit and comparison operators for an enum E.