Skip to content
Snippets Groups Projects
Commit 4b40de4e authored by Jan Trávníček's avatar Jan Trávníček
Browse files

normalize even for glushkov

parent 0745ab1d
No related branches found
No related tags found
No related merge requests found
...@@ -47,20 +47,26 @@ void re2faTest::testThompson() { ...@@ -47,20 +47,26 @@ void re2faTest::testThompson() {
} }
   
void re2faTest::testGlushkov() { void re2faTest::testGlushkov() {
std::string input = "a+a* b*"; std::string input = "a+a*b*";
regexp::UnboundedRegExp regexp1( static_cast<const regexp::UnboundedRegExp &>( alib::StringDataFactory::fromString<regexp::RegExp>(input).getData() ) ); regexp::UnboundedRegExp regexp1( static_cast<const regexp::UnboundedRegExp &>( alib::StringDataFactory::fromString<regexp::RegExp>(input).getData() ) );
   
automaton::NFA nfa1 = regexp::convert::ToAutomatonGlushkov::convert(regexp1); automaton::NFA nfa1 = regexp::convert::ToAutomatonGlushkov::convert(regexp1);
   
regexp::UnboundedRegExp regexp2( static_cast<const regexp::UnboundedRegExp &>( automaton::convert::ToRegExpAlgebraic::convert(nfa1) ) ); regexp::UnboundedRegExp regexp2( static_cast<const regexp::UnboundedRegExp &>( automaton::convert::ToRegExpAlgebraic::convert(nfa1) ) );
   
std::cout << regexp1 << std::endl;
std::cout << regexp2 << std::endl;
automaton::NFA nfa2 = regexp::convert::ToAutomatonGlushkov::convert(regexp2); automaton::NFA nfa2 = regexp::convert::ToAutomatonGlushkov::convert(regexp2);
   
automaton::DFA dfa1 = automaton::determinize::Determinize::determinize(nfa1); automaton::DFA dfa1 = automaton::determinize::Determinize::determinize(nfa1);
automaton::DFA dfa2 = automaton::determinize::Determinize::determinize(nfa2); automaton::DFA dfa2 = automaton::determinize::Determinize::determinize(nfa2);
   
automaton::DFA mdfa1 = automaton::simplify::Minimize::minimize(dfa1); automaton::DFA mdfa1 = automaton::simplify::Normalize::normalize(automaton::simplify::Minimize::minimize(dfa1));
automaton::DFA mdfa2 = automaton::simplify::Minimize::minimize(dfa2); automaton::DFA mdfa2 = automaton::simplify::Normalize::normalize(automaton::simplify::Minimize::minimize(dfa2));
std::cout << mdfa1 << std::endl;
std::cout << mdfa2 << std::endl;
   
CPPUNIT_ASSERT( mdfa1 == mdfa2); CPPUNIT_ASSERT( mdfa1 == mdfa2);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment