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