diff --git a/aminimize2/src/aminimize.cpp b/aminimize2/src/aminimize.cpp index 3a6c226ecf3bbdcd479255e24d5a6e8fcaf39446..f0b75961081b98aa57c42552a436692843164a5b 100644 --- a/aminimize2/src/aminimize.cpp +++ b/aminimize2/src/aminimize.cpp @@ -11,6 +11,7 @@ #include <factory/DataFactory.hpp> #include "automaton/simplify/Minimize.h" +#include "automaton/simplify/MinimizeBrzozowski.h" 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"); 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); std::list<sax::Token> tokens; @@ -33,7 +39,15 @@ int main(int argc, char** argv) { 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; } catch (const exception::AlibException& exception) {