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);