diff --git a/aepsilon2/src/aepsilon.cpp b/aepsilon2/src/aepsilon.cpp index 3c3907832cefcd0a1de96ba2cc833525e3827f6a..2188fc904f1e523cb48867d0cd5c356337b2732e 100644 --- a/aepsilon2/src/aepsilon.cpp +++ b/aepsilon2/src/aepsilon.cpp @@ -45,36 +45,28 @@ int main(int argc, char** argv) { sax::SaxParseInterface::parseStdin(tokens); } - if(efficient.getValue()) { - if(algorithm.getValue() == "outgoing") { + if(algorithm.getValue() == "outgoing") { + if(efficient.getValue()) alib::XmlDataFactory::toStdout(automaton::simplify::efficient::EpsilonRemoverOutgoing::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); - } else if(algorithm.getValue() == "incoming") { - alib::XmlDataFactory::toStdout(automaton::simplify::efficient::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::efficient::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); - else if(alib::XmlDataFactory::first<grammar::Grammar>(tokens)) - throw exception::AlibException("NYI"); - else - throw exception::AlibException("Invalid formalism"); - } else { - throw exception::AlibException("Invalid algorithm"); - } - } else { - if(algorithm.getValue() == "outgoing") { + else alib::XmlDataFactory::toStdout(automaton::simplify::EpsilonRemoverOutgoing::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); - } else if(algorithm.getValue() == "incoming") { + } else if(algorithm.getValue() == "incoming") { + if(efficient.getValue()) + alib::XmlDataFactory::toStdout(automaton::simplify::efficient::EpsilonRemoverIncoming::remove(alib::XmlDataFactory::fromTokens<automaton::Automaton>(tokens))); + else 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)) + } else if(algorithm.getValue() == "default") { + if(alib::XmlDataFactory::first<automaton::Automaton>(tokens)) + if(efficient.getValue()) 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"); - } + alib::XmlDataFactory::toStdout(automaton::simplify::efficient::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"); } return 0;