diff --git a/aepsilon2/src/aepsilon.cpp b/aepsilon2/src/aepsilon.cpp index 2afd29fe7b0f6bf3f1862ca0332213dfcfdc4242..40106b6e88affd68fb5cf220460596cd153b3a9a 100644 --- a/aepsilon2/src/aepsilon.cpp +++ b/aepsilon2/src/aepsilon.cpp @@ -12,13 +12,14 @@ #include "automaton/simplify/EpsilonRemoverIncoming.h" #include "automaton/simplify/EpsilonRemoverOutgoing.h" +#include "grammar/simplify/EpsilonRemover.h" int main(int argc, char** argv) { try { TCLAP::CmdLine cmd("Automaton rename binary", ' ', "0.01"); - TCLAP::ValueArg<std::string> input( "i", "input", "Automaton where to remove epsilon transitions", false, "-", "file"); + TCLAP::ValueArg<std::string> input( "i", "input", "Automaton/Grammar where to remove epsilon transitions", false, "-", "file"); cmd.add( input ); std::vector<std::string> algorithms{"incoming", "outgoing", "default" }; @@ -39,10 +40,17 @@ int main(int argc, char** argv) { sax::SaxParseInterface::parseStdin(tokens); } - if(algorithm.getValue() == "outgoing") + if(algorithm.getValue() == "outgoing") { alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverOutgoing::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); - else if(algorithm.getValue() == "incoming" || algorithm.getValue() == "default") { + } else if(algorithm.getValue() == "incoming") { alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); + } else if(algorithm.getValue() == "default") { + if(alib::XmlDataFactory::first<automaton::Automaton>(tokens)) + alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); + else if(alib::XmlDataFactory::first<grammar::Grammar>(tokens)) + alib::XmlDataFactory::toStdout(grammar::simplify::EpsilonRemover::remove(alib::XmlDataFactory::fromTokens<grammar::Grammar>(tokens))); + else + throw exception::AlibException("Invalid formalism"); } else { throw exception::AlibException("Invalid algorithm"); }