MimIR 0.1
MimIR is my Intermediate Representation
|
Classes | |
struct | app_range |
class | LowerRegex |
Enumerations | |
%regex.lit | |
enum class | lit : flags_t |
%regex.cls | |
enum class | cls : flags_t { d = 0x4c62066400000500 , D = 0x4c62066400000501 , w = 0x4c62066400000502 , W = 0x4c62066400000503 , s = 0x4c62066400000504 , S = 0x4c62066400000505 } |
%regex.any | |
enum class | any : flags_t |
%regex.lower_regex | |
enum class | lower_regex : flags_t |
Functions | |
std::unique_ptr< automaton::NFA > | regex2nfa (Ref regex) |
std::unique_ptr< automaton::NFA > | regex2nfa (decltype(::regex2nfa) *fptr, Ref regex) |
template<class ConjOrDisj > | |
void | flatten_in_arg (Ref arg, DefVec &new_args) |
template<class ConjOrDisj > | |
DefVec | flatten_in_arg (Ref arg) |
template<class ConjOrDisj > | |
Ref | make_binary_tree (Ref type, Defs args) |
bool | compare_re (const Def *lhs, const Def *rhs) |
void | make_vector_unique (DefVec &args) |
bool | is_in_range (Range range, nat_t needle) |
auto | get_range (const Def *rng) -> Range |
void | merge_ranges (DefVec &args) |
template<cls A, cls B> | |
bool | equals_any (const Def *cls0, const Def *cls1) |
bool | equals_any (const Def *lhs, const Def *rhs) |
bool | equals_any (Defs lhs, Defs rhs) |
void | register_normalizers (Normalizers &normalizers) |
Variables | |
static constexpr plugin_t | Plugin_Id = 0x4c62066400000000 |
%regex.conj | |
enum class | conj : flags_t |
Ref | normalize_conj (Ref type, Ref callee, Ref arg) |
%regex.disj | |
enum class | disj : flags_t |
Ref | normalize_disj (Ref type, Ref, Ref arg) |
%regex.range | |
enum class | range : flags_t |
Ref | normalize_range (Ref type, Ref callee, Ref arg) |
%regex.not_ | |
enum class | not_ : flags_t |
Ref | normalize_not (Ref type, Ref callee, Ref arg) |
%regex.quant | |
enum class | quant : flags_t { optional = 0x4c62066400000700 , star = 0x4c62066400000701 , plus = 0x4c62066400000702 } |
template<quant id> | |
Ref | normalize_quant (Ref type, Ref callee, Ref arg) |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
Definition at line 85 of file normalizers.cpp.
References compare_re(), and mim::match().
Referenced by compare_re(), and make_vector_unique().
Definition at line 142 of file normalizers.cpp.
References equals_any(), and mim::match().
Referenced by equals_any(), equals_any(), equals_any(), and normalize_disj().
Definition at line 146 of file normalizers.cpp.
References equals_any(), and mim::match().
Definition at line 158 of file normalizers.cpp.
References d, equals_any(), and get_range().
Definition at line 60 of file normalizers.cpp.
References flatten_in_arg().
Definition at line 50 of file normalizers.cpp.
References flatten_in_arg(), mim::match(), and mim::Def::projs().
Referenced by flatten_in_arg(), and flatten_in_arg().
Definition at line 111 of file normalizers.cpp.
References get_range(), and mim::match().
Referenced by equals_any(), get_range(), and merge_ranges().
Definition at line 109 of file normalizers.cpp.
References is_in_range().
Referenced by is_in_range().
Definition at line 66 of file normalizers.cpp.
void mim::plug::regex::make_vector_unique | ( | DefVec & | args | ) |
Definition at line 101 of file normalizers.cpp.
References compare_re(), and make_vector_unique().
Referenced by make_vector_unique(), merge_ranges(), and normalize_disj().
void mim::plug::regex::merge_ranges | ( | DefVec & | args | ) |
Definition at line 121 of file normalizers.cpp.
References get_range(), make_vector_unique(), mim::match(), and automaton::merge_ranges().
Definition at line 74 of file normalizers.cpp.
References mim::Def::as_lit_arity(), normalize_conj(), mim::World::raw_app(), and mim::Def::world().
Referenced by normalize_conj().
Definition at line 166 of file normalizers.cpp.
References mim::Def::as_lit_arity(), equals_any(), mim::erase(), make_vector_unique(), mim::match(), normalize_disj(), and mim::Def::world().
Referenced by normalize_disj().
Definition at line 216 of file normalizers.cpp.
References normalize_not(), mim::World::raw_app(), and mim::Def::world().
Referenced by normalize_not().
Definition at line 24 of file normalizers.cpp.
References mim::match(), optional, plus, star, and mim::Def::world().
Definition at line 206 of file normalizers.cpp.
References mim::Lit::get(), normalize_range(), mim::Def::projs(), and mim::Def::world().
Referenced by normalize_range().
|
inline |
Definition at line 15 of file regex2nfa.h.
std::unique_ptr< automaton::NFA > mim::plug::regex::regex2nfa | ( | Ref | regex | ) |
Definition at line 89 of file regex2nfa.cpp.
Referenced by regex2nfa(), and mim::plug::regex::LowerRegex::rewrite().
void mim::plug::regex::register_normalizers | ( | Normalizers & | normalizers | ) |
Referenced by mim_get_plugin().