diff --git a/aepsilon2/src/aepsilon.cpp b/aepsilon2/src/aepsilon.cpp index 2a2b924d5ce621c6f1be1c37dbacb735c254e503..0c2ac5def5cbc57dd03902a53857ee47c0f64aaa 100644 --- a/aepsilon2/src/aepsilon.cpp +++ b/aepsilon2/src/aepsilon.cpp @@ -44,15 +44,26 @@ int main(int argc, char** argv) { } if(alib::FromXMLParsers::automatonParser.first(tokens)) { - automaton::EpsilonNFA automaton = alib::DataFactory::fromTokens<automaton::EpsilonNFA>(tokens); - - automaton::NFA res = epsilon::EpsilonNFAEpsilonRemover::remove( automaton ); - - alib::DataFactory::toStdout(res); + std::string xmlMark = tokens.front( ).getData( ); + if(xmlMark == "EpsilonNFA") { + automaton::EpsilonNFA automaton = alib::DataFactory::fromTokens<automaton::EpsilonNFA>(tokens); + automaton::NFA res = epsilon::EpsilonNFAEpsilonRemover::remove( automaton ); + alib::DataFactory::toStdout(res); + } else if(xmlMark == "NFA") { + automaton::NFA automaton = alib::DataFactory::fromTokens<automaton::NFA>(tokens); + alib::DataFactory::toStdout(automaton); + } else if(xmlMark == "DFA") { + automaton::DFA automaton = alib::DataFactory::fromTokens<automaton::DFA>(tokens); + alib::DataFactory::toStdout(automaton); + } else { + automaton::EpsilonNFA automaton = alib::DataFactory::fromTokens<automaton::EpsilonNFA>(tokens); + automaton::NFA res = epsilon::EpsilonNFAEpsilonRemover::remove( automaton ); + alib::DataFactory::toStdout(res); + } + } else { + throw exception::AlibException("Invalid argument expected Epsilon NFA."); } - throw exception::AlibException("Invalid argument expected Epsilon NFA."); - } catch (const exception::AlibException& exception) { alib::DataFactory::toStdout(exception); return 1;