MimIR
0.5-dev
MimIR is my Intermediate Representation
Toggle main menu visibility
Loading...
Searching...
No Matches
nfa.cpp
Go to the documentation of this file.
1
#include "
automaton/nfa.h
"
2
3
#include <string>
4
5
#include "
automaton/automaton.h
"
6
7
namespace
automaton
{
8
9
void
NFANode::add_transition
(
const
NFANode
* to, std::uint16_t c) { transitions_[c].push_back(to); }
10
11
std::vector<const NFANode*>
NFANode::get_transitions
(std::uint16_t c)
const
{
12
if
(erroring_)
return
{};
13
14
if
(
auto
it = transitions_.find(c); it != transitions_.end())
15
return
it->second;
16
else
17
return
{};
18
}
19
20
template
class
AutomatonBase<NFANode>
;
21
22
void
NFANode::print
(std::ostream& os)
const
{
23
auto
print_char = [](std::uint16_t c) -> std::string {
24
if
(c ==
NFA::SpecialTransitons::EPSILON
)
25
return
"ε"
;
26
else
if
(c >= 48 && c <= 122)
27
return
{
static_cast<
char
>
(c)};
28
return
std::to_string(c);
29
};
30
31
print_node
(os, *
this
, print_char);
32
}
33
34
}
// namespace automaton
automaton.h
automaton::AutomatonBase
Definition
automaton.h:21
automaton::NFANode::print
void print(std::ostream &os) const
Definition
nfa.cpp:22
automaton::NFANode::NFANode
NFANode(int id)
Definition
nfa.h:20
automaton::NFANode::get_transitions
std::vector< const NFANode * > get_transitions(std::uint16_t c) const
Definition
nfa.cpp:11
automaton::NFANode::add_transition
void add_transition(const NFANode *to, std::uint16_t c)
Definition
nfa.cpp:9
automaton::NFA::EPSILON
@ EPSILON
Definition
nfa.h:74
automaton
Definition
automaton.h:15
automaton::print_node
void print_node(std::ostream &os, const NodeType &node, std::invocable< std::uint64_t > auto print_char)
Definition
automaton.h:79
nfa.h
src
automaton
nfa.cpp
Generated by
1.18.0