diff --git a/alib2str/src/automaton/string/FSM/DFA.h b/alib2str/src/automaton/string/FSM/DFA.h
index c50074934177fdaf25ed682c515f1cf031f26ff4..1bf890016f5178e38bdd2c5f3cf0ca4c1501e926 100644
--- a/alib2str/src/automaton/string/FSM/DFA.h
+++ b/alib2str/src/automaton/string/FSM/DFA.h
@@ -56,6 +56,8 @@ automaton::DFA < SymbolType, StateType > stringApi < automaton::DFA < SymbolType
 		token = automaton::AutomatonFromStringLexer::next(input);
 		if(token.type == automaton::AutomatonFromStringLexer::TokenType::TEOF)
 			break;
+		else if (token.type == automaton::AutomatonFromStringLexer::TokenType::NEW_LINE)
+			continue;
 		else
 			automaton::AutomatonFromStringLexer::putback(input, token);
 
@@ -102,7 +104,7 @@ void stringApi < automaton::DFA < SymbolType, StateType > >::parseTransition(std
 	automaton::AutomatonFromStringLexer::Token token = automaton::AutomatonFromStringLexer::next(input);
 	typename ext::vector<SymbolType>::const_iterator iter = symbols.begin();
 
-	while(token.type != automaton::AutomatonFromStringLexer::TokenType::NEW_LINE) {
+	while ( token.type != automaton::AutomatonFromStringLexer::TokenType::NEW_LINE && token.type != automaton::AutomatonFromStringLexer::TokenType::TEOF ) {
 		if(iter == symbols.end())
 			throw exception::CommonException("Invalid line format");
 
diff --git a/alib2str/src/automaton/string/FSM/EpsilonNFA.h b/alib2str/src/automaton/string/FSM/EpsilonNFA.h
index 40f05e7bc4779e02c9e8b867d3a76680af77a671..b63e7a611cfaf607791a431e17acf5390e9b0799 100644
--- a/alib2str/src/automaton/string/FSM/EpsilonNFA.h
+++ b/alib2str/src/automaton/string/FSM/EpsilonNFA.h
@@ -62,6 +62,8 @@ automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > stringApi < automat
 		token = automaton::AutomatonFromStringLexer::next(input);
 		if(token.type == automaton::AutomatonFromStringLexer::TokenType::TEOF)
 			break;
+		else if (token.type == automaton::AutomatonFromStringLexer::TokenType::NEW_LINE)
+			continue;
 		else
 			automaton::AutomatonFromStringLexer::putback(input, token);
 
@@ -109,8 +111,9 @@ void stringApi < automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > >:
 	automaton::AutomatonFromStringLexer::Token token = automaton::AutomatonFromStringLexer::next(input);
 	typename ext::vector<ext::variant<EpsilonType, SymbolType>>::const_iterator iter = symbols.begin();
 
-	while(token.type != automaton::AutomatonFromStringLexer::TokenType::NEW_LINE) {
-		if(iter == symbols.end()) throw exception::CommonException("Invalid line format");
+	while ( token.type != automaton::AutomatonFromStringLexer::TokenType::NEW_LINE && token.type != automaton::AutomatonFromStringLexer::TokenType::TEOF ) {
+		if(iter == symbols.end())
+			throw exception::CommonException("Invalid line format");
 
 		if(token.type != automaton::AutomatonFromStringLexer::TokenType::NONE) {
 			automaton::AutomatonFromStringLexer::putback(input, token);
diff --git a/alib2str/src/automaton/string/FSM/MultiInitialStateNFA.h b/alib2str/src/automaton/string/FSM/MultiInitialStateNFA.h
index 0bf4f141515ddd604b24e0a77d71c1fa04ef6d58..c595aa05cef41e66bf4d4624f51807d62942c764 100644
--- a/alib2str/src/automaton/string/FSM/MultiInitialStateNFA.h
+++ b/alib2str/src/automaton/string/FSM/MultiInitialStateNFA.h
@@ -54,6 +54,8 @@ automaton::MultiInitialStateNFA < SymbolType, StateType > stringApi < automaton:
 		token = automaton::AutomatonFromStringLexer::next(input);
 		if(token.type == automaton::AutomatonFromStringLexer::TokenType::TEOF)
 			break;
+		else if (token.type == automaton::AutomatonFromStringLexer::TokenType::NEW_LINE)
+			continue;
 		else
 			automaton::AutomatonFromStringLexer::putback(input, token);
 
@@ -82,8 +84,9 @@ void stringApi < automaton::MultiInitialStateNFA < SymbolType, StateType > >::pa
 	automaton::AutomatonFromStringLexer::Token token = automaton::AutomatonFromStringLexer::next(input);
 	typename ext::vector<SymbolType>::const_iterator iter = symbols.begin();
 
-	while(token.type != automaton::AutomatonFromStringLexer::TokenType::NEW_LINE) {
-		if(iter == symbols.end()) throw exception::CommonException("Invalid line format");
+	while ( token.type != automaton::AutomatonFromStringLexer::TokenType::NEW_LINE && token.type != automaton::AutomatonFromStringLexer::TokenType::TEOF ) {
+		if(iter == symbols.end())
+			throw exception::CommonException("Invalid line format");
 
 		if(token.type != automaton::AutomatonFromStringLexer::TokenType::NONE) {
 			automaton::AutomatonFromStringLexer::putback(input, token);
diff --git a/alib2str/src/automaton/string/FSM/NFA.h b/alib2str/src/automaton/string/FSM/NFA.h
index 656f317259f83203af8882b1c17240cdcba391ab..37f700560982c49f1c85885ab04a0e4c684bfae4 100644
--- a/alib2str/src/automaton/string/FSM/NFA.h
+++ b/alib2str/src/automaton/string/FSM/NFA.h
@@ -56,6 +56,8 @@ automaton::NFA < SymbolType, StateType > stringApi < automaton::NFA < SymbolType
 		token = automaton::AutomatonFromStringLexer::next(input);
 		if(token.type == automaton::AutomatonFromStringLexer::TokenType::TEOF)
 			break;
+		else if (token.type == automaton::AutomatonFromStringLexer::TokenType::NEW_LINE)
+			continue;
 		else
 			automaton::AutomatonFromStringLexer::putback(input, token);
 
@@ -101,8 +103,9 @@ void stringApi < automaton::NFA < SymbolType, StateType > >::parseTransition(std
 	automaton::AutomatonFromStringLexer::Token token = automaton::AutomatonFromStringLexer::next(input);
 	typename ext::vector < SymbolType >::const_iterator iter = symbols.begin();
 
-	while(token.type != automaton::AutomatonFromStringLexer::TokenType::NEW_LINE) {
-		if(iter == symbols.end()) throw exception::CommonException("Invalid line format");
+	while ( token.type != automaton::AutomatonFromStringLexer::TokenType::NEW_LINE && token.type != automaton::AutomatonFromStringLexer::TokenType::TEOF ) {
+		if(iter == symbols.end())
+			throw exception::CommonException("Invalid line format");
 
 		if(token.type != automaton::AutomatonFromStringLexer::TokenType::NONE) {
 			automaton::AutomatonFromStringLexer::putback(input, token);
diff --git a/alib2str/test-src/automaton/AutomatonTest.cpp b/alib2str/test-src/automaton/AutomatonTest.cpp
index bf78ed3155465ef75a833824ffdf2fe2e795cc1a..d1310fd946a9ae20e64f4c7e3a4b57f06e9fcea7 100644
--- a/alib2str/test-src/automaton/AutomatonTest.cpp
+++ b/alib2str/test-src/automaton/AutomatonTest.cpp
@@ -40,13 +40,21 @@ void AutomatonTest::FSMStringParserTest() {
 					"1 2 - - - -\n"
 					"2 3 - - - -\n"
 					"3 - - 4 - -\n"
-					"4 - 5 - - 5\n"
+					"\n"
+					"<4 - 5 - - 5\n"
+					"<5 - - - - 3";
+		std::string input2 = 	"ENFA a b c d #E\n"
+					">0 3|4 5 1|3|4 - 2\n"
+					"1 2 - - - -\n"
+					"2 3 - - - -\n"
+					"3 - - 4 - -\n"
+					"<4 - 5 - - 5\n"
 					"<5 - - - - 3\n";
 		automaton::Automaton automaton = alib::StringDataFactory::fromString (input);
 
 		std::string output = alib::StringDataFactory::toString(automaton);
 
-		CPPUNIT_ASSERT( input == output );
+		CPPUNIT_ASSERT( input2 == output );
 
 		automaton::Automaton automaton2 = alib::StringDataFactory::fromString (output);