MimIR
0.4-dev
MimIR is my Intermediate Representation
Toggle main menu visibility
Loading...
Searching...
No Matches
dfa.cpp
Go to the documentation of this file.
1
#include "
automaton/dfa.h
"
2
3
#include <string>
4
5
#include "
automaton/automaton.h
"
6
7
namespace
automaton
{
8
9
void
DFANode::add_transition
(
const
DFANode
* to, std::uint16_t c) { transitions_[c] = to; }
10
11
const
DFANode
*
DFANode::get_transition
(std::uint16_t c)
const
{
12
if
(erroring_)
return
nullptr
;
13
if
(
auto
i = transitions_.find(c); i != transitions_.end())
return
i->second;
14
return
nullptr
;
15
}
16
17
template
class
AutomatonBase<DFANode>
;
18
19
std::ostream&
operator<<
(std::ostream& os,
const
DFANode
& node) {
20
auto
print_char = [](std::uint16_t c) -> std::string {
21
if
(c >= 48 && c <= 122)
return
{
static_cast<
char
>
(c)};
22
return
std::to_string(c);
23
};
24
return
print_node
(os, node, print_char);
25
}
26
27
}
// namespace automaton
automaton.h
automaton::AutomatonBase
Definition
automaton.h:18
automaton::DFANode::operator<<
friend std::ostream & operator<<(std::ostream &os, const DFANode &node)
Definition
dfa.cpp:19
automaton::DFANode::DFANode
DFANode(int id)
Definition
dfa.h:19
automaton::DFANode::get_transition
const DFANode * get_transition(std::uint16_t c) const
Definition
dfa.cpp:11
automaton::DFANode::add_transition
void add_transition(const DFANode *to, std::uint16_t c)
Definition
dfa.cpp:9
dfa.h
automaton
Definition
automaton.h:12
automaton::print_node
std::ostream & print_node(std::ostream &os, const NodeType &node, PrintCharF &&print_char)
Definition
automaton.h:71
src
automaton
dfa.cpp
Generated by
1.18.0