diff --git a/alib2str/src/automaton/string/FSM/DFA.h b/alib2str/src/automaton/string/FSM/DFA.h
index 3bfae51c1d8e44d3ab0135485cbe0b4f67734b82..f03091a2061e138d09fb78c9ab44f68cf4104cf0 100644
--- a/alib2str/src/automaton/string/FSM/DFA.h
+++ b/alib2str/src/automaton/string/FSM/DFA.h
@@ -63,6 +63,9 @@ automaton::DFA < SymbolType, StateType > stringApi < automaton::DFA < SymbolType
 		token = automaton::AutomatonFromStringLexer::next(input);
 	}
 
+	if(token.type != automaton::AutomatonFromStringLexer::TokenType::TEOF)
+		throw exception::CommonException("Extra data after the automaton.");
+
 	if(initialState == NULL)
 		throw exception::CommonException("No initial state recognised.");
 
diff --git a/alib2str/src/automaton/string/FSM/EpsilonNFA.h b/alib2str/src/automaton/string/FSM/EpsilonNFA.h
index ae651b06258273e28ea30d19358c099ca69364fd..40f05e7bc4779e02c9e8b867d3a76680af77a671 100644
--- a/alib2str/src/automaton/string/FSM/EpsilonNFA.h
+++ b/alib2str/src/automaton/string/FSM/EpsilonNFA.h
@@ -69,6 +69,9 @@ automaton::EpsilonNFA < SymbolType, EpsilonType, StateType > stringApi < automat
 		token = automaton::AutomatonFromStringLexer::next(input);
 	}
 
+	if(token.type != automaton::AutomatonFromStringLexer::TokenType::TEOF)
+		throw exception::CommonException("Extra data after the automaton.");
+
 	if(initialState == NULL) throw exception::CommonException("No initial state recognised.");
 
 	automaton::EpsilonNFA < > res(*initialState);
diff --git a/alib2str/src/automaton/string/FSM/MultiInitialStateNFA.h b/alib2str/src/automaton/string/FSM/MultiInitialStateNFA.h
index d680cbf1f297695a1f8a1b581904e97780f6d9eb..0bf4f141515ddd604b24e0a77d71c1fa04ef6d58 100644
--- a/alib2str/src/automaton/string/FSM/MultiInitialStateNFA.h
+++ b/alib2str/src/automaton/string/FSM/MultiInitialStateNFA.h
@@ -61,6 +61,9 @@ automaton::MultiInitialStateNFA < SymbolType, StateType > stringApi < automaton:
 		token = automaton::AutomatonFromStringLexer::next(input);
 	}
 
+	if(token.type != automaton::AutomatonFromStringLexer::TokenType::TEOF)
+		throw exception::CommonException("Extra data after the automaton.");
+
 	return res;
 }
 
diff --git a/alib2str/src/automaton/string/FSM/NFA.h b/alib2str/src/automaton/string/FSM/NFA.h
index 1934aae330619af1a6f0a6c261a2c7ac902ef42b..656f317259f83203af8882b1c17240cdcba391ab 100644
--- a/alib2str/src/automaton/string/FSM/NFA.h
+++ b/alib2str/src/automaton/string/FSM/NFA.h
@@ -63,6 +63,9 @@ automaton::NFA < SymbolType, StateType > stringApi < automaton::NFA < SymbolType
 		token = automaton::AutomatonFromStringLexer::next(input);
 	}
 
+	if(token.type != automaton::AutomatonFromStringLexer::TokenType::TEOF)
+		throw exception::CommonException("Extra data after the automaton.");
+
 	if(initialState == NULL) throw exception::CommonException("No initial state recognised.");
 
 	automaton::NFA < > res(*initialState);