From d5d1c61b444b3f20e49cc8fea6439445e4632c70 Mon Sep 17 00:00:00 2001 From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz> Date: Fri, 5 Sep 2014 16:58:20 +0200 Subject: [PATCH] aepsilon accepts NFA and DFA as well --- aepsilon2/src/aepsilon.cpp | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/aepsilon2/src/aepsilon.cpp b/aepsilon2/src/aepsilon.cpp index 2a2b924d5c..0c2ac5def5 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; -- GitLab