-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
28 lines (25 loc) · 1.05 KB
/
Copy pathmain.cpp
File metadata and controls
28 lines (25 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include "lexer/regexToNFA.h"
#include "lexer/automataTransformations.h"
// TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
int main() {
auto nfa = RegexToNFA::fromRegex("a|b");
nfa.displayTransitionTable();
auto dfa = AutomataTransformations::nfa_to_dfa(nfa);
dfa.displayTransitionTable();
auto minimizable_dba = DFA();
minimizable_dba.addState(0, true);
minimizable_dba.addTransition(0, 'a', 1);
minimizable_dba.addTransition(0, 'b', 2);
minimizable_dba.addTransition(1, 'a', 2);
minimizable_dba.addTransition(1, 'b', 2);
minimizable_dba.addTransition(2, 'a', 3);
minimizable_dba.addTransition(2, 'b', 3);
minimizable_dba.addTransition(3, 'a', 4);
minimizable_dba.addTransition(3, 'b', 0);
minimizable_dba.addTransition(4, 'a', 3);
minimizable_dba.addTransition(4, 'b', 0);
auto minimized_dfa = AutomataTransformations::minimize_dfa(minimizable_dba);
minimized_dfa.displayTransitionTable();
}