Thorin 1.9.0
The Higher ORder INtermediate representation
Loading...
Searching...
No Matches
automaton Namespace Reference

Classes

class  AutomatonBase
 
class  DFA
 
class  DFANode
 
class  NFA
 
class  NFANode
 
struct  RangeCompare
 

Typedefs

template<class To >
using DFAMap = absl::flat_hash_map< const DFANode *, To >
 
using Range = std::pair< std::uint64_t, std::uint64_t >
 

Functions

template<class NodeType , class PrintCharF >
std::ostream & print_node (std::ostream &os, const NodeType &node, PrintCharF &&print_char)
 
std::unique_ptr< DFAminimize_dfa (const DFA &dfa)
 
std::unique_ptr< DFAnfa2dfa (const NFA &nfa)
 
std::optional< Rangemerge_ranges (Range a, Range b) noexcept
 
template<class Vec , class LogF >
Vec merge_ranges (const Vec &old_ranges, LogF &&log)
 
template<class Vec >
auto merge_ranges (const Vec &old_ranges)
 
std::ostream & operator<< (std::ostream &os, const DFANode &node)
 
std::ostream & operator<< (std::ostream &os, const NFANode &node)
 
std::set< const NFANode * > epsilonClosure (const std::set< const NFANode * > &states)
 
std::set< const NFANode * > epsilonClosure (const NFANode *state)
 

Typedef Documentation

◆ DFAMap

template<class To >
using automaton::DFAMap = typedef absl::flat_hash_map<const DFANode*, To>

Definition at line 63 of file dfa.h.

◆ Range

using automaton::Range = typedef std::pair<std::uint64_t, std::uint64_t>

Definition at line 10 of file range_helper.h.

Function Documentation

◆ epsilonClosure() [1/2]

std::set< const NFANode * > automaton::epsilonClosure ( const NFANode state)

Definition at line 28 of file nfa2dfa.cpp.

References epsilonClosure().

◆ epsilonClosure() [2/2]

std::set< const NFANode * > automaton::epsilonClosure ( const std::set< const NFANode * > &  states)

Definition at line 11 of file nfa2dfa.cpp.

References automaton::NFA::EPSILON.

Referenced by epsilonClosure(), and nfa2dfa().

◆ merge_ranges() [1/3]

template<class Vec >
auto automaton::merge_ranges ( const Vec &  old_ranges)

Definition at line 52 of file range_helper.h.

References merge_ranges().

◆ merge_ranges() [2/3]

template<class Vec , class LogF >
Vec automaton::merge_ranges ( const Vec &  old_ranges,
LogF &&  log 
)

Definition at line 26 of file range_helper.h.

References merge_ranges().

◆ merge_ranges() [3/3]

std::optional< Range > automaton::merge_ranges ( Range  a,
Range  b 
)
inlinenoexcept

Definition at line 16 of file range_helper.h.

Referenced by merge_ranges(), merge_ranges(), and thorin::plug::regex::merge_ranges().

◆ minimize_dfa()

std::unique_ptr< DFA > automaton::minimize_dfa ( const DFA dfa)

◆ nfa2dfa()

std::unique_ptr< DFA > automaton::nfa2dfa ( const NFA nfa)

◆ operator<<() [1/2]

std::ostream & automaton::operator<< ( std::ostream &  os,
const DFANode node 
)

Definition at line 20 of file dfa.cpp.

◆ operator<<() [2/2]

std::ostream & automaton::operator<< ( std::ostream &  os,
const NFANode node 
)

Definition at line 26 of file nfa.cpp.

◆ print_node()

template<class NodeType , class PrintCharF >
std::ostream & automaton::print_node ( std::ostream &  os,
const NodeType &  node,
PrintCharF &&  print_char 
)

Definition at line 70 of file automaton.h.