Skip to content
Snippets Groups Projects
Commit 3d97f7df authored by Tomáš Pecka's avatar Tomáš Pecka
Browse files

aminimize: optionally select algorithm

parent f1b161a2
No related branches found
No related tags found
2 merge requests!8Brzozowski Minimize algorithm,!7Brzozowski Minimize algorithm
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <factory/DataFactory.hpp> #include <factory/DataFactory.hpp>
   
#include "automaton/simplify/Minimize.h" #include "automaton/simplify/Minimize.h"
#include "automaton/simplify/MinimizeBrzozowski.h"
   
int main(int argc, char** argv) { int main(int argc, char** argv) {
   
...@@ -20,6 +21,11 @@ int main(int argc, char** argv) { ...@@ -20,6 +21,11 @@ int main(int argc, char** argv) {
TCLAP::ValueArg<std::string> input( "a", "automaton", "Automaton to minimize", false, "-", "file"); TCLAP::ValueArg<std::string> input( "a", "automaton", "Automaton to minimize", false, "-", "file");
cmd.add( input ); cmd.add( input );
   
std::vector<std::string> algorithms {"Hopcroft", "Brzozowski" };
TCLAP::ValuesConstraint<std::string> algorithmVals( algorithms );
TCLAP::ValueArg<std::string> algorithm( "g", "algorithm", "Use specific algorithm. Hopcroft default.", false, "", &algorithmVals);
cmd.add( algorithm );
cmd.parse(argc, argv); cmd.parse(argc, argv);
   
std::list<sax::Token> tokens; std::list<sax::Token> tokens;
...@@ -33,7 +39,15 @@ int main(int argc, char** argv) { ...@@ -33,7 +39,15 @@ int main(int argc, char** argv) {
sax::SaxParseInterface::parseStdin(tokens); sax::SaxParseInterface::parseStdin(tokens);
} }
   
alib::DataFactory::toStdout(automaton::simplify::Minimize::minimize(alib::DataFactory::fromTokens<automaton::Automaton>(tokens))); if(algorithm.getValue() == "Hopcroft" || algorithm.getValue() == "") {
alib::DataFactory::toStdout(automaton::simplify::Minimize::minimize(alib::DataFactory::fromTokens<automaton::Automaton>(tokens)));
}
else if(algorithm.getValue() == "Brzozowski") {
alib::DataFactory::toStdout(automaton::simplify::MinimizeBrzozowski::minimize(alib::DataFactory::fromTokens<automaton::Automaton>(tokens)));
} else {
throw exception::AlibException("Unknown algorithm selected.");
}
return 0; return 0;
   
} catch (const exception::AlibException& exception) { } catch (const exception::AlibException& exception) {
......
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