29 const fsa_alpha& label);
32 fsa_state get_src()
const {
36 fsa_state get_dst()
const {
40 fsa_alpha get_label()
const {
44 void set_dst(fsa_state dst) {
48 void set_label(
const fsa_alpha label) {
52 void set_src(
const fsa_state src) {
69 os <<
"(" << r.get_src() <<
",";
70 if (r.get_label() == alphabet::EPSILON)
71 os << alphabet::OPT_EPSILON;
74 os <<
"," << r.get_dst() <<
")";
85 if (r1.get_src() == r2.get_src()) {
86 if (r1.get_dst() == r2.get_dst())
87 return r1.get_label() < r2.get_label();
88 return r1.get_dst() < r2.get_dst();
90 return r1.get_src() < r2.get_src();
110 return (r1.get_src() == r2.get_src()) && (r1.get_dst() == r2.get_dst())
111 && (r1.get_label() == r2.get_label());
125 using fsa_delta = unordered_map<fsa_state, set<fsa_transition>>;
134 const fsa_state& accept);
149 const fsa_delta& get_transitions()
const {
158 this->start = initials;
161 fsa_state get_accept()
const {
166 return states.size() == 0 || transitions.size() == 0;
186 if (fsa.get_states().size() == 0)
225 for (
auto q : fsa.get_start())
227 for (
auto s : fsa.get_states())
230 os <<
"F = { " << fsa.get_accept() <<
"}\n";
232 for (
auto p : fsa.get_transitions()) {
233 for (
auto r : p.second)
234 os << string(4,
' ') << r <<
"\n";
uint pda_alpha
define the stack symbol of PDSs
Definition: pda.hh:19
virtual ~finite_automaton()
Definition: fsa.cc:77
unordered_map< fsa_state, set< fsa_transition > > fsa_delta
the data structure of FSA transitions
Definition: fsa.hh:125
bool operator>(const visible_state &s1, const visible_state &s2)
Definition: cpda.hh:108
bool operator==(const visible_state &s1, const visible_state &s2)
Definition: cpda.hh:118
bool operator!=(const visible_state &s1, const visible_state &s2)
Definition: cpda.hh:131
fsa_transition()
Definition: fsa.cc:15
set< fsa_alpha > fsa_alphabet
a set of fsa_alpha
Definition: fsa.hh:20
ostream & operator<<(ostream &os, const visible_state &s)
Definition: cpda.hh:70
~fsa_transition()
Definition: fsa.cc:37
uint pda_state
define the control state of PDSs
Definition: pda.hh:17
bool operator<(const visible_state &s1, const visible_state &s2)
Definition: cpda.hh:95
set< fsa_state > fsa_state_set
a set of fsa_state
Definition: fsa.hh:16
finite_automaton(const fsa_state_set &states, const fsa_alphabet &alphabet, const fsa_delta &transitions, const fsa_state_set &start, const fsa_state &accept)
Definition: fsa.cc:50