Thorin 1.9.0
The Higher ORder INtermediate representation
Loading...
Searching...
No Matches
normalizers.cpp File Reference
#include <algorithm>
#include <iterator>
#include <numeric>
#include <ranges>
#include <vector>
#include <automaton/range_helper.h>
#include <fe/assert.h>
#include "thorin/axiom.h"
#include "thorin/def.h"
#include "thorin/tuple.h"
#include "thorin/world.h"
#include "thorin/util/log.h"
#include "thorin/plug/regex/regex.h"
Include dependency graph for normalizers.cpp:

Go to the source code of this file.

Classes

struct  thorin::plug::regex::app_range
 

Namespaces

namespace  thorin
 
namespace  thorin::plug
 
namespace  thorin::plug::regex
 The regex Plugin
 

Typedefs

using Range = automaton::Range
 
using Ranges = thorin::Vector< Range >
 

Functions

template<class ConjOrDisj >
void thorin::plug::regex::flatten_in_arg (Ref arg, DefVec &new_args)
 
template<class ConjOrDisj >
DefVec thorin::plug::regex::flatten_in_arg (Ref arg)
 
template<class ConjOrDisj >
Ref thorin::plug::regex::make_binary_tree (Ref type, Defs args)
 
bool thorin::plug::regex::compare_re (const Def *lhs, const Def *rhs)
 
void thorin::plug::regex::make_vector_unique (DefVec &args)
 
bool thorin::plug::regex::is_in_range (Range range, nat_t needle)
 
auto thorin::plug::regex::get_range (const Def *rng) -> Range
 
void thorin::plug::regex::merge_ranges (DefVec &args)
 
template<cls A, cls B>
bool thorin::plug::regex::equals_any (const Def *cls0, const Def *cls1)
 
bool thorin::plug::regex::equals_any (const Def *lhs, const Def *rhs)
 
bool thorin::plug::regex::equals_any (Defs lhs, Defs rhs)
 
%regex.quant
template<quant id>
Ref thorin::plug::regex::normalize_quant (Ref type, Ref callee, Ref arg)
 
%regex.conj
Ref thorin::plug::regex::normalize_conj (Ref type, Ref callee, Ref arg)
 
%regex.disj
Ref thorin::plug::regex::normalize_disj (Ref type, Ref, Ref arg)
 
%regex.range
Ref thorin::plug::regex::normalize_range (Ref type, Ref callee, Ref arg)
 
%regex.not_
Ref thorin::plug::regex::normalize_not (Ref type, Ref callee, Ref arg)
 

Typedef Documentation

◆ Range

Definition at line 19 of file normalizers.cpp.

◆ Ranges

Definition at line 20 of file normalizers.cpp.