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