MimIR
MimIR is my 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 = std::map<const DFANode*, To, DFANode::Lt>
using DFASet = std::set<const DFANode*, DFANode::Lt>
using NFASet = std::set<const NFANode*, NFANode::Lt>
using Range = std::pair<std::uint64_t, std::uint64_t>

Functions

template<class NodeType>
void print_node (std::ostream &os, const NodeType &node, std::invocable< std::uint64_t > auto print_char)
std::unique_ptr< DFA > minimize_dfa (const DFA &dfa)
std::unique_ptr< DFA > nfa2dfa (const NFA &nfa)
std::optional< Range > merge_ranges (Range a, Range b) noexcept
template<class Vec>
Vec merge_ranges (const Vec &old_ranges, std::invocable< std::string_view > auto log)
template<class Vec>
auto merge_ranges (const Vec &old_ranges)

Typedef Documentation

◆ DFAMap

template<class To>
using automaton::DFAMap = std::map<const DFANode*, To, DFANode::Lt>

Definition at line 70 of file dfa.h.

◆ DFASet

using automaton::DFASet = std::set<const DFANode*, DFANode::Lt>

Definition at line 71 of file dfa.h.

◆ NFASet

using automaton::NFASet = std::set<const NFANode*, NFANode::Lt>

Definition at line 65 of file nfa.h.

◆ Range

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

Definition at line 13 of file range_helper.h.

Function Documentation

◆ merge_ranges() [1/3]

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

Definition at line 46 of file range_helper.h.

References merge_ranges().

◆ merge_ranges() [2/3]

template<class Vec>
Vec automaton::merge_ranges ( const Vec & old_ranges,
std::invocable< std::string_view > auto log )

Definition at line 30 of file range_helper.h.

References merge_ranges().

◆ merge_ranges() [3/3]

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

◆ minimize_dfa()

◆ nfa2dfa()

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

◆ print_node()

template<class NodeType>
void automaton::print_node ( std::ostream & os,
const NodeType & node,
std::invocable< std::uint64_t > auto print_char )

Definition at line 79 of file automaton.h.

References merge_ranges(), and print_node().

Referenced by automaton::DFANode::print(), automaton::NFANode::print(), and print_node().