From 95807fcc72152ed0fb0d126e4abedf0a45964f03 Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Fri, 10 Nov 2017 10:30:00 +0100
Subject: [PATCH] detect eof after automaton is parsed

---
 alib2str/src/automaton/string/FSM/DFA.h                  | 3 +++
 alib2str/src/automaton/string/FSM/EpsilonNFA.h           | 3 +++
 alib2str/src/automaton/string/FSM/MultiInitialStateNFA.h | 3 +++
 alib2str/src/automaton/string/FSM/NFA.h                  | 3 +++
 4 files changed, 12 insertions(+)

diff --git a/alib2str/src/automaton/string/FSM/DFA.h b/alib2str/src/automaton/string/FSM/DFA.h
index 3bfae51c1d..f03091a206 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 ae651b0625..40f05e7bc4 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 d680cbf1f2..0bf4f14151 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 1934aae330..656f317259 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);
-- 
GitLab