diff --git a/acompare2/src/AutomatonCompare.h b/acompare2/src/AutomatonCompare.h index 0919e8d6ca5248a9a70b29bbac46aefceef434ba..4473125fc4d3c1c07a9c6c06b17f65f852a4b44e 100644 --- a/acompare2/src/AutomatonCompare.h +++ b/acompare2/src/AutomatonCompare.h @@ -73,10 +73,10 @@ private: template<class SymbolType, class StateType> static void printCompare(const automaton::CompactNFA < SymbolType, StateType > & a, const automaton::CompactNFA < SymbolType, StateType > & b); - template<class SymbolType, class EpsilonType, class StateType> - static bool testCompare(const automaton::DPDA < SymbolType, EpsilonType, StateType > & a, const automaton::DPDA < SymbolType, EpsilonType, StateType > & b); - template<class SymbolType, class EpsilonType, class StateType> - static void printCompare(const automaton::DPDA < SymbolType, EpsilonType, StateType > & a, const automaton::DPDA < SymbolType, EpsilonType, StateType > & b); + template<class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType> + static bool testCompare(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & b); + template<class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType> + static void printCompare(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & b); template<class SymbolType, class EpsilonType, class StateType> static bool testCompare(const automaton::NPDA < SymbolType, EpsilonType, StateType > & a, const automaton::NPDA < SymbolType, EpsilonType, StateType > & b); @@ -160,8 +160,8 @@ public: template<class SymbolType, class RankType, class StateType> static int compare(const automaton::NFTA < SymbolType, RankType, StateType > & a, const automaton::NFTA < SymbolType, RankType, StateType > & b); - template<class SymbolType, class EpsilonType, class StateType> - static int compare(const automaton::DPDA < SymbolType, EpsilonType, StateType > & a, const automaton::DPDA < SymbolType, EpsilonType, StateType > & b); + template<class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType> + static int compare(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & b); template<class SymbolType, class EpsilonType, class StateType> static int compare(const automaton::NPDA < SymbolType, EpsilonType, StateType > & a, const automaton::NPDA < SymbolType, EpsilonType, StateType > & b); template<class SymbolType, class StateType> @@ -257,8 +257,8 @@ bool AutomatonCompare::testCompare(const automaton::NFTA < SymbolType, RankType, a.getTransitions() == b.getTransitions() ; } -template<class SymbolType, class EpsilonType, class StateType> -bool AutomatonCompare::testCompare(const automaton::DPDA < SymbolType, EpsilonType, StateType > & a, const automaton::DPDA < SymbolType, EpsilonType, StateType > & b) { +template<class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType> +bool AutomatonCompare::testCompare(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & b) { return a.getFinalStates() == b.getFinalStates() && a.getInitialState() == b.getInitialState() && // a.getInputAlphabet() == b.getInputAlphabet() && @@ -718,8 +718,8 @@ void AutomatonCompare::printCompare(const automaton::NFTA < SymbolType, RankType } } -template<class SymbolType, class EpsilonType, class StateType> -void AutomatonCompare::printCompare(const automaton::DPDA < SymbolType, EpsilonType, StateType > & a, const automaton::DPDA < SymbolType, EpsilonType, StateType > & b) { +template<class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType> +void AutomatonCompare::printCompare(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & b) { std::cout << "AutomatonCompareer" << std::endl; if(a.getFinalStates() != b.getFinalStates()){ @@ -1439,8 +1439,8 @@ int AutomatonCompare::compare(const automaton::NFTA < SymbolType, RankType, Stat } } -template<class SymbolType, class EpsilonType, class StateType> -int AutomatonCompare::compare(const automaton::DPDA < SymbolType, EpsilonType, StateType > & a, const automaton::DPDA < SymbolType, EpsilonType, StateType > & b) { +template<class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType> +int AutomatonCompare::compare(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & b) { if(!AutomatonCompare::testCompare(a, b)) { AutomatonCompare::printCompare(a, b); return 1; diff --git a/aconvert2/src/DotConverter.h b/aconvert2/src/DotConverter.h index d7415254b1a0b436689bac1e23fdcd92193efc41..48dc860e8e95ca5788f43e8b4b389d798bbbc39e 100644 --- a/aconvert2/src/DotConverter.h +++ b/aconvert2/src/DotConverter.h @@ -73,8 +73,8 @@ class DotConverter : public std::SingleDispatchFirstStaticParam<DotConverter, vo template < class SymbolType, class RankType, class StateType > static void transitions(const automaton::DFTA < SymbolType, RankType, StateType > & fsm, const std::map < StateType, int > & states, std::ostream & out); - template < class SymbolType, class EpsilonType, class StateType > - static void transitions(const automaton::DPDA < SymbolType, EpsilonType, StateType > & pda, const std::map < StateType, int > & states, std::ostream & out); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static void transitions(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & pda, const std::map < StateType, int > & states, std::ostream & out); template < class SymbolType, class EpsilonType, class StateType > static void transitions(const automaton::NPDA < SymbolType, EpsilonType, StateType > & pda, const std::map < StateType, int > & states, std::ostream & out); @@ -132,8 +132,8 @@ public: template < class SymbolType, class RankType, class StateType > static void convert(std::ostream& out, const automaton::DFTA < SymbolType, RankType, StateType > & a); - template < class SymbolType, class EpsilonType, class StateType > - static void convert(std::ostream& out, const automaton::DPDA < SymbolType, EpsilonType, StateType > & a); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static void convert(std::ostream& out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a); template < class SymbolType, class EpsilonType, class StateType > static void convert(std::ostream& out, const automaton::NPDA < SymbolType, EpsilonType, StateType > & a); @@ -416,8 +416,8 @@ void DotConverter::convert(std::ostream& out, const automaton::DFTA < SymbolType out << "}"; } -template < class SymbolType, class EpsilonType, class StateType > -void DotConverter::convert(std::ostream& out, const automaton::DPDA < SymbolType, EpsilonType, StateType > & a) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +void DotConverter::convert(std::ostream& out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a) { out << "digraph automaton {\n"; out << "rankdir=LR;\n"; int cnt = 1; @@ -1087,8 +1087,8 @@ void DotConverter::transitions(const automaton::DFTA < SymbolType, RankType, Sta } } -template < class SymbolType, class EpsilonType, class StateType > -void DotConverter::transitions(const automaton::DPDA < SymbolType, EpsilonType, StateType > & pda, const std::map<StateType, int>& states, std::ostream& out) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +void DotConverter::transitions(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & pda, const std::map < StateType, int > & states, std::ostream& out) { std::map<std::pair<int, int>, std::string> transitions; for (const auto& transition : pda.getTransitions()) { @@ -1098,7 +1098,7 @@ void DotConverter::transitions(const automaton::DPDA < SymbolType, EpsilonType, if (std::get<1>(transition.first).template is< EpsilonType >()) { symbol = "ε"; } else { - symbol = alib::StringDataFactory::toString(std::get<1>(transition.first).template get<SymbolType>()); + symbol = alib::StringDataFactory::toString(std::get<1>(transition.first).template get<InputSymbolType>()); } symbol += " |"; @@ -1107,7 +1107,7 @@ void DotConverter::transitions(const automaton::DPDA < SymbolType, EpsilonType, if (std::get<2>(transition.first).size() == 0) { symbol += " ε"; } else { - for (SymbolType symb : std::get<2>(transition.first)) { + for ( const PushdownStoreSymbolType & symb : std::get<2>(transition.first)) { symbol += " " + alib::StringDataFactory::toString(symb); } @@ -1119,7 +1119,7 @@ void DotConverter::transitions(const automaton::DPDA < SymbolType, EpsilonType, if (transition.second.second.size() == 0) { symbol += " ε"; } else { - for (SymbolType symb : transition.second.second) { + for ( const PushdownStoreSymbolType & symb : transition.second.second) { symbol += " " + alib::StringDataFactory::toString(symb); } diff --git a/aconvert2/src/GasTexConverter.h b/aconvert2/src/GasTexConverter.h index dae47f34215f9fd53d1b46929f88081d378d16b5..6eef7c70cb357682badaf7bd47895a5f8e42a7e2 100644 --- a/aconvert2/src/GasTexConverter.h +++ b/aconvert2/src/GasTexConverter.h @@ -77,8 +77,8 @@ class GasTexConverter : public std::SingleDispatchFirstStaticParam<GasTexConvert template < class SymbolType, class RankType, class StateType > static void transitions(const automaton::DFTA < SymbolType, RankType, StateType > & fsm, std::ostream & out); - template < class SymbolType, class EpsilonType, class StateType > - static void transitions(const automaton::DPDA < SymbolType, EpsilonType, StateType > & pda, std::ostream & out); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static void transitions(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & pda, std::ostream & out); template < class SymbolType, class EpsilonType, class StateType > static void transitions(const automaton::NPDA < SymbolType, EpsilonType, StateType > & pda, std::ostream & out); @@ -136,8 +136,8 @@ public: template < class SymbolType, class RankType, class StateType > static void convert(std::ostream& out, const automaton::DFTA < SymbolType, RankType, StateType > & a); - template < class SymbolType, class EpsilonType, class StateType > - static void convert(std::ostream& out, const automaton::DPDA < SymbolType, EpsilonType, StateType > & a); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static void convert(std::ostream& out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a); template < class SymbolType, class EpsilonType, class StateType > static void convert(std::ostream& out, const automaton::NPDA < SymbolType, EpsilonType, StateType > & a); @@ -420,8 +420,8 @@ void GasTexConverter::convert(std::ostream&, const automaton::DFTA < SymbolType, //TODO } -template < class SymbolType, class EpsilonType, class StateType > -void GasTexConverter::convert(std::ostream& out, const automaton::DPDA < SymbolType, EpsilonType, StateType > & a) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +void GasTexConverter::convert(std::ostream& out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a) { out << "\\begin{center}\n"; out << "\\begin{picture}(,)(,)\n"; @@ -1012,8 +1012,8 @@ void GasTexConverter::transitions(const automaton::DFTA < SymbolType, RankType, //TODO } -template<class SymbolType, class EpsilonType, class StateType> -void GasTexConverter::transitions(const automaton::DPDA < SymbolType, EpsilonType, StateType > & pda, std::ostream& out) { +template<class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType> +void GasTexConverter::transitions(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & pda, std::ostream& out) { std::map<std::pair<std::string, std::string>, std::string> transitionMap; for (const auto& transition : pda.getTransitions()) { @@ -1024,7 +1024,7 @@ void GasTexConverter::transitions(const automaton::DPDA < SymbolType, EpsilonTyp if (std::get<1>(transition.first).template is<EpsilonType>()) { symbol = "$\\varepsilon;$"; } else { - symbol = alib::StringDataFactory::toString(std::get<1>(transition.first).template get<SymbolType>()); + symbol = alib::StringDataFactory::toString(std::get<1>(transition.first).template get<InputSymbolType>()); } symbol += "|"; diff --git a/aconvert2/src/TikZConverter.h b/aconvert2/src/TikZConverter.h index b1132d34d4e5a0a60a40fbc747140124498fa624..2f2ab4c96b2d22ca886d39a4552b2709316a5866 100644 --- a/aconvert2/src/TikZConverter.h +++ b/aconvert2/src/TikZConverter.h @@ -73,8 +73,8 @@ class TikZConverter : public std::SingleDispatchFirstStaticParam < TikZConverter template < class SymbolType, class RankType, class StateType > static void transitions(const automaton::DFTA < SymbolType, RankType, StateType > & fsm, const std::map < StateType, int > & states, std::ostream & out); - template < class SymbolType, class EpsilonType, class StateType > - static void transitions(const automaton::DPDA < SymbolType, EpsilonType, StateType > & pda, const std::map < StateType, int > & states, std::ostream & out); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static void transitions(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & pda, const std::map < StateType, int > & states, std::ostream & out); template < class SymbolType, class EpsilonType, class StateType > static void transitions(const automaton::NPDA < SymbolType, EpsilonType, StateType > & pda, const std::map < StateType, int > & states, std::ostream & out); @@ -132,8 +132,8 @@ public: template < class SymbolType, class RankType, class StateType > static void convert(std::ostream& out, const automaton::DFTA < SymbolType, RankType, StateType > & a); - template < class SymbolType, class EpsilonType, class StateType > - static void convert(std::ostream& out, const automaton::DPDA < SymbolType, EpsilonType, StateType > & a); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static void convert(std::ostream& out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a); template < class SymbolType, class EpsilonType, class StateType > static void convert(std::ostream& out, const automaton::NPDA < SymbolType, EpsilonType, StateType > & a); @@ -384,8 +384,8 @@ void TikZConverter::convert ( std::ostream & out, const automaton::DFTA < Symbol out << "\\end{tikzpicture}"; } -template<class SymbolType, class EpsilonType, class StateType> -void TikZConverter::convert ( std::ostream & out, const automaton::DPDA < SymbolType, EpsilonType, StateType > & a ) { +template<class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType> +void TikZConverter::convert ( std::ostream & out, const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & a ) { out << "\\begin{tikzpicture}\n"; int cnt = 1; @@ -1083,8 +1083,8 @@ void TikZConverter::transitions ( const automaton::DFTA < SymbolType, RankType, } } -template<class SymbolType, class EpsilonType, class StateType> -void TikZConverter::transitions ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & pda, const std::map < StateType, int > & states, std::ostream & out ) { +template<class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType> +void TikZConverter::transitions ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & pda, const std::map < StateType, int > & states, std::ostream & out ) { std::map < std::pair < int, int >, std::string > transitions; for ( const auto & transition : pda.getTransitions ( ) ) { @@ -1094,7 +1094,7 @@ void TikZConverter::transitions ( const automaton::DPDA < SymbolType, EpsilonTyp if ( std::get < 1 > ( transition.first ).template is < EpsilonType > ( ) ) symbol = "ε"; else - symbol = alib::StringDataFactory::toString ( std::get < 1 > ( transition.first ).template get < SymbolType > ( ) ); + symbol = alib::StringDataFactory::toString ( std::get < 1 > ( transition.first ).template get < InputSymbolType > ( ) ); symbol += " |"; @@ -1102,7 +1102,7 @@ void TikZConverter::transitions ( const automaton::DPDA < SymbolType, EpsilonTyp if ( std::get < 2 > ( transition.first ).size ( ) == 0 ) symbol += " ε"; else - for ( SymbolType symb : std::get < 2 > ( transition.first ) ) + for ( const PushdownStoreSymbolType & symb : std::get < 2 > ( transition.first ) ) symbol += " " + alib::StringDataFactory::toString ( symb ); symbol += " ->"; @@ -1111,7 +1111,7 @@ void TikZConverter::transitions ( const automaton::DPDA < SymbolType, EpsilonTyp if ( transition.second.second.size ( ) == 0 ) symbol += " ε"; else - for ( SymbolType symb : transition.second.second ) + for ( const PushdownStoreSymbolType & symb : transition.second.second ) symbol += " " + alib::StringDataFactory::toString ( symb ); // Insert into map diff --git a/alib2algo/src/automaton/run/Accept.h b/alib2algo/src/automaton/run/Accept.h index 172aec9a3ed210adacd540c7a352b07df0a73e41..569aae16883febdd91c002a2c6741746b9ea389e 100644 --- a/alib2algo/src/automaton/run/Accept.h +++ b/alib2algo/src/automaton/run/Accept.h @@ -58,8 +58,8 @@ public: static bool accept ( const automaton::VisiblyPushdownDPDA < SymbolType, StateType > & automaton, const string::LinearString < SymbolType > & string ); template < class SymbolType, class EpsilonType, class StateType > static bool accept ( const automaton::RealTimeHeightDeterministicDPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ); - template < class SymbolType, class EpsilonType, class StateType > - static bool accept ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static bool accept ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const string::LinearString < InputSymbolType > & string ); template < class SymbolType, class EpsilonType, class StateType > static bool accept ( const automaton::NPDTA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ); @@ -118,9 +118,9 @@ bool Accept::accept ( const automaton::RealTimeHeightDeterministicDPDA < SymbolT return std::get < 0 > ( res ) && automaton.getFinalStates ( ).count ( std::get < 1 > ( res ) ); } -template < class SymbolType, class EpsilonType, class StateType > -bool Accept::accept ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ) { - std::tuple < bool, StateType, std::set < unsigned >, std::deque < SymbolType > > res = Run::calculateState ( automaton, string ); +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +bool Accept::accept ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const string::LinearString < InputSymbolType > & string ) { + std::tuple < bool, StateType, std::set < unsigned >, std::deque < PushdownStoreSymbolType > > res = Run::calculateState ( automaton, string ); return std::get < 0 > ( res ) && ( automaton.getFinalStates ( ).count ( std::get < 1 > ( res ) ) || ( automaton.getFinalStates ( ).size ( ) == 0 && std::get < 3 > ( res ).size ( ) == 0 ) ); } diff --git a/alib2algo/src/automaton/run/Occurrences.h b/alib2algo/src/automaton/run/Occurrences.h index a95b4f913e0f7d9f52781fc67caf9c52ab16c210..8acf4f5a73873e12b9aefab56f6bdcace67fe9ee 100644 --- a/alib2algo/src/automaton/run/Occurrences.h +++ b/alib2algo/src/automaton/run/Occurrences.h @@ -50,8 +50,8 @@ public: static std::set < unsigned > occurrences ( const automaton::VisiblyPushdownDPDA < SymbolType, StateType > & automaton, const string::LinearString < SymbolType > & string ); template < class SymbolType, class EpsilonType, class StateType > static std::set < unsigned > occurrences ( const automaton::RealTimeHeightDeterministicDPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ); - template < class SymbolType, class EpsilonType, class StateType > - static std::set < unsigned > occurrences ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static std::set < unsigned > occurrences ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const string::LinearString < InputSymbolType > & string ); }; @@ -90,9 +90,9 @@ std::set < unsigned > Occurrences::occurrences ( const automaton::RealTimeHeight return std::get < 2 > ( res ); } -template < class SymbolType, class EpsilonType, class StateType > -std::set < unsigned > Occurrences::occurrences ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ) { - std::tuple < bool, StateType, std::set < unsigned >, std::deque < SymbolType > > res = Run::calculateState ( automaton, string ); +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +std::set < unsigned > Occurrences::occurrences ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const string::LinearString < InputSymbolType > & string ) { + std::tuple < bool, StateType, std::set < unsigned >, std::deque < PushdownStoreSymbolType > > res = Run::calculateState ( automaton, string ); return std::get < 2 > ( res ); } diff --git a/alib2algo/src/automaton/run/Result.h b/alib2algo/src/automaton/run/Result.h index bc6341fe7df795503ccda3b2f0bb679311da5865..549713ecca3cfe8bc47f80e38a89077e5ac720ea 100644 --- a/alib2algo/src/automaton/run/Result.h +++ b/alib2algo/src/automaton/run/Result.h @@ -50,8 +50,8 @@ public: static StateType result ( const automaton::VisiblyPushdownDPDA < SymbolType, StateType > & automaton, const string::LinearString < SymbolType > & string, const StateType & failLabel = label::FailStateLabel::instance < StateType > ( ) ); template < class SymbolType, class EpsilonType, class StateType > static StateType result ( const automaton::RealTimeHeightDeterministicDPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string, const StateType & failLabel = label::FailStateLabel::instance < StateType > ( ) ); - template < class SymbolType, class EpsilonType, class StateType > - static StateType result ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string, const StateType & failLabel = label::FailStateLabel::instance < StateType > ( ) ); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static StateType result ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const string::LinearString < InputSymbolType > & string, const StateType & failLabel = label::FailStateLabel::instance < StateType > ( ) ); }; @@ -100,9 +100,9 @@ StateType Result::result ( const automaton::RealTimeHeightDeterministicDPDA < Sy return failLabel; } -template < class SymbolType, class EpsilonType, class StateType > -StateType Result::result ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string, const StateType & failLabel ) { - std::tuple < bool, StateType, std::set < unsigned >, std::deque < SymbolType > > res = Run::calculateState ( automaton, string ); +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +StateType Result::result ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const string::LinearString < InputSymbolType > & string, const StateType & failLabel ) { + std::tuple < bool, StateType, std::set < unsigned >, std::deque < PushdownStoreSymbolType > > res = Run::calculateState ( automaton, string ); if ( std::get < 0 > ( res ) ) return std::get < 1 > ( res ); diff --git a/alib2algo/src/automaton/run/Run.h b/alib2algo/src/automaton/run/Run.h index 96e4bec98ab627b10f7eb9e59c32e893f85683ce..b67c1b58ca4088322268c40eb86cdede9139233c 100644 --- a/alib2algo/src/automaton/run/Run.h +++ b/alib2algo/src/automaton/run/Run.h @@ -57,8 +57,8 @@ public: static std::tuple < bool, StateType, std::set < unsigned >, std::deque < SymbolType > > calculateState ( const automaton::VisiblyPushdownDPDA < SymbolType, StateType > & automaton, const string::LinearString < SymbolType > & string ); template < class SymbolType, class EpsilonType, class StateType > static std::tuple < bool, StateType, std::set < unsigned >, std::deque < SymbolType > > calculateState ( const automaton::RealTimeHeightDeterministicDPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ); - template < class SymbolType, class EpsilonType, class StateType > - static std::tuple < bool, StateType, std::set < unsigned >, std::deque < SymbolType > > calculateState ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static std::tuple < bool, StateType, std::set < unsigned >, std::deque < PushdownStoreSymbolType > > calculateState ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const string::LinearString < InputSymbolType > & string ); template < class SymbolType, class EpsilonType, class StateType > static std::tuple < bool, std::set < StateType >, std::set < std::vector < SymbolType > > > calculateStates ( const automaton::NPDTA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ); }; @@ -463,10 +463,10 @@ std::tuple < bool, StateType, std::set < unsigned >, std::deque < SymbolType > > // ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -template < class SymbolType, class EpsilonType, class StateType > -std::tuple < bool, StateType, std::set < unsigned >, std::deque < SymbolType > > Run::calculateState ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const string::LinearString < SymbolType > & string ) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +std::tuple < bool, StateType, std::set < unsigned >, std::deque < PushdownStoreSymbolType > > Run::calculateState ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const string::LinearString < InputSymbolType > & string ) { StateType state = automaton.getInitialState ( ); - std::deque < SymbolType > pushdownStore { + std::deque < PushdownStoreSymbolType > pushdownStore { automaton.getInitialSymbol ( ) }; unsigned i = 0; diff --git a/alib2algo/src/automaton/simplify/Normalize.cpp b/alib2algo/src/automaton/simplify/Normalize.cpp index 00e1737ed31be9656136e7df946afd18e1e63237..4951676f15d34199a70503925e6e2918e7443d98 100644 --- a/alib2algo/src/automaton/simplify/Normalize.cpp +++ b/alib2algo/src/automaton/simplify/Normalize.cpp @@ -26,7 +26,7 @@ automaton::Automaton Normalize::normalize(const automaton::Automaton& automaton) } auto NormalizeDFA = Normalize::RegistratorWrapper<automaton::DFA < DefaultSymbolType, unsigned >, automaton::DFA < > >(Normalize::normalize); -auto NormalizeDPDA = Normalize::RegistratorWrapper<automaton::DPDA < DefaultSymbolType, DefaultEpsilonType, unsigned >, automaton::DPDA < > >(Normalize::normalize); +auto NormalizeDPDA = Normalize::RegistratorWrapper<automaton::DPDA < DefaultSymbolType, DefaultEpsilonType, unsigned, unsigned >, automaton::DPDA < > >(Normalize::normalize); } /* namespace simplify */ diff --git a/alib2algo/src/automaton/simplify/Normalize.h b/alib2algo/src/automaton/simplify/Normalize.h index 889f02463e64f12fee0311e46155d9a151339b3f..9abc53763552b9b27bc6801cb9ef3e841c61aeff 100644 --- a/alib2algo/src/automaton/simplify/Normalize.h +++ b/alib2algo/src/automaton/simplify/Normalize.h @@ -26,8 +26,8 @@ public: template < class SymbolType, class StateType > static automaton::DFA < SymbolType, unsigned > normalize(const automaton::DFA < SymbolType, StateType > & dfa); - template < class EpsilonType, class StateType > - static automaton::DPDA < DefaultSymbolType, EpsilonType, unsigned > normalize(const automaton::DPDA < DefaultSymbolType, EpsilonType, StateType > & dfa); + template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > + static automaton::DPDA < InputSymbolType, EpsilonType, unsigned, unsigned > normalize(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & dfa); }; template < class SymbolType, class StateType > @@ -77,12 +77,12 @@ automaton::DFA < SymbolType, unsigned > Normalize::normalize(const automaton::DF return result; } -template < class EpsilonType, class StateType > -automaton::DPDA < DefaultSymbolType, EpsilonType, unsigned > Normalize::normalize(const automaton::DPDA < DefaultSymbolType, EpsilonType, StateType > & pda) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +automaton::DPDA < InputSymbolType, EpsilonType, unsigned, unsigned > Normalize::normalize(const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & pda) { unsigned counterState = 0; std::map< StateType, unsigned > normalizationDataState; - int counterSymbol = 0; - std::map < DefaultSymbolType, int > normalizationDataSymbol; + unsigned counterSymbol = 0; + std::map < InputSymbolType, unsigned > normalizationDataSymbol; std::deque < StateType > processingData; normalizationDataState.insert(std::make_pair(pda.getInitialState(), counterState++)); @@ -93,16 +93,16 @@ automaton::DPDA < DefaultSymbolType, EpsilonType, unsigned > Normalize::normaliz StateType current = std::move ( processingData.front() ); processingData.pop_front(); - std::map < std::pair < std::variant < EpsilonType, DefaultSymbolType >, std::vector < DefaultSymbolType > >, std::pair < StateType, std::vector < DefaultSymbolType > > > transform; + std::map < std::pair < std::variant < EpsilonType, InputSymbolType >, std::vector < unsigned > >, std::pair < StateType, std::vector < PushdownStoreSymbolType > > > transform; bool stateFinished = true; // For each transition from state current - for ( const std::pair < const std::tuple < StateType, std::variant < EpsilonType, DefaultSymbolType >, std::vector < DefaultSymbolType > >, std::pair < StateType, std::vector < DefaultSymbolType > > > & iter : pda.getTransitionsFromState(current)) { + for ( const std::pair < const std::tuple < StateType, std::variant < EpsilonType, InputSymbolType >, std::vector < PushdownStoreSymbolType > >, std::pair < StateType, std::vector < PushdownStoreSymbolType > > > & iter : pda.getTransitionsFromState(current)) { // look whether all poped symbols are already transformed - if(std::all_of(std::get<2>(iter.first).begin(), std::get<2>(iter.first).end(), [&](const DefaultSymbolType& symbol) { return normalizationDataSymbol.find(symbol) != normalizationDataSymbol.end(); })) { - std::vector < DefaultSymbolType > transformedSymbols; + if(std::all_of(std::get<2>(iter.first).begin(), std::get<2>(iter.first).end(), [&](const PushdownStoreSymbolType& symbol) { return normalizationDataSymbol.find(symbol) != normalizationDataSymbol.end(); })) { + std::vector < unsigned > transformedSymbols; // if so compute vector of transformed poped symbol -- this can be compared to other vectors of transformed symbols and the order can by trusted - for(const DefaultSymbolType& symbol : std::get<2> ( iter.first ) ) { - transformedSymbols.push_back(DefaultSymbolType(normalizationDataSymbol.find(symbol)->second)); + for(const PushdownStoreSymbolType& symbol : std::get<2> ( iter.first ) ) { + transformedSymbols.push_back(normalizationDataSymbol.find(symbol)->second); } // then first order is by input symbol and the second is this vector transfomed symbols @@ -126,7 +126,7 @@ automaton::DPDA < DefaultSymbolType, EpsilonType, unsigned > Normalize::normaliz processingData.push_back(iters.first); } // if the symbols in order given by order of pushing are new asign a unique number to them - for(const DefaultSymbolType& iter2 : iters.second) { + for(const PushdownStoreSymbolType & iter2 : iters.second) { if( normalizationDataSymbol.find(iter2) == normalizationDataSymbol.end() ) { normalizationDataSymbol.insert(std::make_pair(iter2, counterSymbol++)); } @@ -138,11 +138,11 @@ automaton::DPDA < DefaultSymbolType, EpsilonType, unsigned > Normalize::normaliz throw exception::CommonException("Automaton normalize require connected deterministic pushdown automaton"); } - automaton::DPDA < DefaultSymbolType, EpsilonType, unsigned > result ( normalizationDataState.find ( pda.getInitialState ( ) )->second, DefaultSymbolType ( normalizationDataSymbol.find ( pda.getInitialSymbol ( ) )->second ) ); + automaton::DPDA < InputSymbolType, EpsilonType, unsigned, unsigned > result ( normalizationDataState.find ( pda.getInitialState ( ) )->second, normalizationDataSymbol.find ( pda.getInitialSymbol ( ) )->second ); result.setInputAlphabet(pda.getInputAlphabet()); for(const DefaultSymbolType & symbol : pda.getPushdownStoreAlphabet()) - result.addPushdownStoreSymbol(DefaultSymbolType(normalizationDataSymbol.find(symbol)->second)); + result.addPushdownStoreSymbol(normalizationDataSymbol.find(symbol)->second); for(const DefaultStateType & state : pda.getStates()) result.addState ( normalizationDataState.find(state)->second); @@ -151,13 +151,13 @@ automaton::DPDA < DefaultSymbolType, EpsilonType, unsigned > Normalize::normaliz result.addFinalState ( normalizationDataState.find(state)->second ); for(const auto & transition : pda.getTransitions()) { - std::vector<DefaultSymbolType> pop; + std::vector<unsigned> pop; for(const auto& elem : std::get<2>(transition.first)) { - pop.push_back(DefaultSymbolType(normalizationDataSymbol.find(elem)->second)); + pop.push_back(normalizationDataSymbol.find(elem)->second); } - std::vector<DefaultSymbolType> push; + std::vector<unsigned> push; for(const auto& elem : transition.second.second) { - push.push_back(DefaultSymbolType(normalizationDataSymbol.find(elem)->second)); + push.push_back(normalizationDataSymbol.find(elem)->second); } result.addTransition ( normalizationDataState.find(std::get<0>(transition.first))->second, std::get<1>(transition.first), pop, normalizationDataState.find(transition.second.first)->second, push); } diff --git a/alib2data/src/automaton/AutomatonFeatures.h b/alib2data/src/automaton/AutomatonFeatures.h index 7e9d0054e769d82fe8d79678f42d5674493806ec..922a242eee8ffbe455f50607ef53faf99afc3e65 100644 --- a/alib2data/src/automaton/AutomatonFeatures.h +++ b/alib2data/src/automaton/AutomatonFeatures.h @@ -53,7 +53,7 @@ template<class SymbolType = DefaultSymbolType, class StateType = DefaultStateTyp class CompactNFA; template<class SymbolType = DefaultSymbolType, class StateType = DefaultStateType > class ExtendedNFA; -template<class SymbolType = DefaultSymbolType, class EpsilonType = DefaultEpsilonType, class StateType = DefaultStateType > +template<class InputSymbolType = DefaultSymbolType, class EpsilonType = DefaultEpsilonType, class PushdownStoreSymbolType = DefaultSymbolType, class StateType = DefaultStateType > class DPDA; template<class SymbolType = DefaultSymbolType, class StateType = DefaultStateType > class InputDrivenDPDA; diff --git a/alib2data/src/automaton/PDA/DPDA.h b/alib2data/src/automaton/PDA/DPDA.h index bf078ecc9f2faa1b2105f2cc0ccacc0fcfa027bc..ea973a6b8e24a376562fecac6120d6b232ce6dda 100644 --- a/alib2data/src/automaton/PDA/DPDA.h +++ b/alib2data/src/automaton/PDA/DPDA.h @@ -41,14 +41,14 @@ class InitialState; * if $\delta (q, a, \alpha) \neq \emptyset$, $\delta (q, a, \beta) \neq \emptyset$ and $\alpha \neq \beta$, then $\alpha$ is not suffix of $\beta$ and $\beta$ is not suffix of $\alpha$ (formally $\gamma \alpha \neq \beta and \alpha \neq \gamma \beta$). * if $\delta(q, a, \alpha) \neq \emptyset$, $\delta (q, \varepsilon, \beta) \neq \emptyset$, then $\alpha$ is not suffix of $\beta$ and $\beta$ is not suffix of $\alpha$ (fornally $\gamma \alpha \neq \beta and \alpha \neq \gamma \beta$). */ -template < class SymbolType, class EpsilonType, class StateType > -class DPDA : public AutomatonBase, public std::Components < DPDA < SymbolType, EpsilonType, StateType >, SymbolType, std::tuple < InputAlphabet, PushdownStoreAlphabet >, std::tuple < InitialSymbol >, StateType, std::tuple < States, FinalStates >, std::tuple < InitialState > > { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +class DPDA : public AutomatonBase, public std::Components < DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >, InputSymbolType, std::tuple < InputAlphabet>, std::tuple < >, PushdownStoreSymbolType, std::tuple < PushdownStoreAlphabet >, std::tuple < InitialSymbol >, StateType, std::tuple < States, FinalStates >, std::tuple < InitialState > > { protected: - std::map < std::tuple < StateType, std::variant < EpsilonType, SymbolType >, std::vector < SymbolType > >, std::pair < StateType, std::vector < SymbolType > > > transitions; + std::map < std::tuple < StateType, std::variant < EpsilonType, InputSymbolType >, std::vector < PushdownStoreSymbolType > >, std::pair < StateType, std::vector < PushdownStoreSymbolType > > > transitions; public: - explicit DPDA ( std::set < StateType > states, std::set < SymbolType > inputAlphabet, std::set < SymbolType > pushdownStoreSymbol, StateType initialState, SymbolType initialPushdownSymbol, std::set < StateType > finalStates ); - explicit DPDA ( StateType initialState, SymbolType initialPushdownSymbol ); + explicit DPDA ( std::set < StateType > states, std::set < InputSymbolType > inputAlphabet, std::set < PushdownStoreSymbolType > pushdownStoreSymbol, StateType initialState, PushdownStoreSymbolType initialPushdownSymbol, std::set < StateType > finalStates ); + explicit DPDA ( StateType initialState, PushdownStoreSymbolType initialPushdownSymbol ); virtual AutomatonBase * clone ( ) const; @@ -94,51 +94,51 @@ public: this->template accessComponent < FinalStates > ( ).remove ( state ); } - const std::set < SymbolType > & getPushdownStoreAlphabet ( ) const { + const std::set < PushdownStoreSymbolType > & getPushdownStoreAlphabet ( ) const { return this->template accessComponent < PushdownStoreAlphabet > ( ).get ( ); } - bool addPushdownStoreSymbol ( SymbolType symbol ) { + bool addPushdownStoreSymbol ( PushdownStoreSymbolType symbol ) { return this->template accessComponent < PushdownStoreAlphabet > ( ).add ( std::move ( symbol ) ); } - void addPushdownStoreSymbols ( std::set < SymbolType > symbols ) { + void addPushdownStoreSymbols ( std::set < PushdownStoreSymbolType > symbols ) { this->template accessComponent < PushdownStoreAlphabet > ( ).add ( std::move ( symbols ) ); } - void setPushdownStoreAlphabet ( std::set < SymbolType > symbols ) { + void setPushdownStoreAlphabet ( std::set < PushdownStoreSymbolType > symbols ) { this->template accessComponent < PushdownStoreAlphabet > ( ).set ( std::move ( symbols ) ); } - void removePushdownStoreSymbol ( const SymbolType & symbol ) { + void removePushdownStoreSymbol ( const PushdownStoreSymbolType & symbol ) { this->template accessComponent < PushdownStoreAlphabet > ( ).remove ( symbol ); } - const SymbolType & getInitialSymbol ( ) const { + const PushdownStoreSymbolType & getInitialSymbol ( ) const { return this->template accessElement < InitialSymbol > ( ).get ( ); } - bool setInitialSymbol ( SymbolType symbol ) { + bool setInitialSymbol ( PushdownStoreSymbolType symbol ) { return this->template accessElement < InitialSymbol > ( ).set ( std::move ( symbol ) ); } - const std::set < SymbolType > & getInputAlphabet ( ) const { + const std::set < InputSymbolType > & getInputAlphabet ( ) const { return this->template accessComponent < InputAlphabet > ( ).get ( ); } - bool addInputSymbol ( SymbolType symbol ) { + bool addInputSymbol ( InputSymbolType symbol ) { return this->template accessComponent < InputAlphabet > ( ).add ( std::move ( symbol ) ); } - void addInputSymbols ( std::set < SymbolType > symbols ) { + void addInputSymbols ( std::set < InputSymbolType > symbols ) { this->template accessComponent < InputAlphabet > ( ).add ( std::move ( symbols ) ); } - void setInputAlphabet ( std::set < SymbolType > symbols ) { + void setInputAlphabet ( std::set < InputSymbolType > symbols ) { this->template accessComponent < InputAlphabet > ( ).set ( std::move ( symbols ) ); } - void removeInputSymbol ( const SymbolType & symbol ) { + void removeInputSymbol ( const InputSymbolType & symbol ) { this->template accessComponent < InputAlphabet > ( ).remove ( symbol ); } @@ -148,37 +148,37 @@ public: * @throws AutomatonException when some part of the transition is not present * in the DPDA (state, input symbol, stack symbol) or when transition already exists */ - bool addTransition ( StateType from, std::variant < EpsilonType, SymbolType > input, std::vector < SymbolType > pop, StateType to, std::vector < SymbolType > push ); + bool addTransition ( StateType from, std::variant < EpsilonType, InputSymbolType > input, std::vector < PushdownStoreSymbolType > pop, StateType to, std::vector < PushdownStoreSymbolType > push ); - bool addTransition ( StateType from, SymbolType input, std::vector < SymbolType > pop, StateType to, std::vector < SymbolType > push ); + bool addTransition ( StateType from, InputSymbolType input, std::vector < PushdownStoreSymbolType > pop, StateType to, std::vector < PushdownStoreSymbolType > push ); - bool addTransition ( StateType from, std::vector < SymbolType > pop, StateType to, std::vector < SymbolType > push ); + bool addTransition ( StateType from, std::vector < PushdownStoreSymbolType > pop, StateType to, std::vector < PushdownStoreSymbolType > push ); /** * Removes the transition from the DPDA. * @param transition transition to remove * @throws AutomatonException when transition is not present in the DPDA */ - bool removeTransition ( const StateType & from, const std::variant < EpsilonType, SymbolType > & input, const std::vector < SymbolType > & pop, const StateType & to, const std::vector < SymbolType > & push ); + bool removeTransition ( const StateType & from, const std::variant < EpsilonType, InputSymbolType > & input, const std::vector < PushdownStoreSymbolType > & pop, const StateType & to, const std::vector < PushdownStoreSymbolType > & push ); - bool removeTransition ( const StateType & from, const SymbolType & input, const std::vector < SymbolType > & pop, const StateType & to, const std::vector < SymbolType > & push ); + bool removeTransition ( const StateType & from, const InputSymbolType & input, const std::vector < PushdownStoreSymbolType > & pop, const StateType & to, const std::vector < PushdownStoreSymbolType > & push ); - bool removeTransition ( const StateType & from, const std::vector < SymbolType > & pop, const StateType & to, const std::vector < SymbolType > & push ); + bool removeTransition ( const StateType & from, const std::vector < PushdownStoreSymbolType > & pop, const StateType & to, const std::vector < PushdownStoreSymbolType > & push ); /** * @return DPDA transitions */ - const std::map < std::tuple < StateType, std::variant < EpsilonType, SymbolType >, std::vector < SymbolType > >, std::pair < StateType, std::vector < SymbolType > > > & getTransitions ( ) const; + const std::map < std::tuple < StateType, std::variant < EpsilonType, InputSymbolType >, std::vector < PushdownStoreSymbolType > >, std::pair < StateType, std::vector < PushdownStoreSymbolType > > > & getTransitions ( ) const; /** * @return automaton transitions from state */ - std::map < std::tuple < StateType, std::variant < EpsilonType, SymbolType >, std::vector < SymbolType > >, std::pair < StateType, std::vector < SymbolType > > > getTransitionsFromState ( const StateType & from ) const; + std::map < std::tuple < StateType, std::variant < EpsilonType, InputSymbolType >, std::vector < PushdownStoreSymbolType > >, std::pair < StateType, std::vector < PushdownStoreSymbolType > > > getTransitionsFromState ( const StateType & from ) const; /** * @return automaton transitions to state */ - std::map < std::tuple < StateType, std::variant < EpsilonType, SymbolType >, std::vector < SymbolType > >, std::pair < StateType, std::vector < SymbolType > > > getTransitionsToState ( const StateType & from ) const; + std::map < std::tuple < StateType, std::variant < EpsilonType, InputSymbolType >, std::vector < PushdownStoreSymbolType > >, std::pair < StateType, std::vector < PushdownStoreSymbolType > > > getTransitionsToState ( const StateType & from ) const; virtual int compare ( const ObjectBase & other ) const { if ( std::type_index ( typeid ( * this ) ) == std::type_index ( typeid ( other ) ) ) return this->compare ( ( decltype ( * this ) )other ); @@ -207,72 +207,72 @@ public: virtual alib::ObjectBase * inc ( ) &&; }; -template < class SymbolType, class EpsilonType, class StateType > -DPDA < SymbolType, EpsilonType, StateType >::DPDA ( std::set < StateType > states, std::set < SymbolType > inputAlphabet, std::set < SymbolType > pushdownStoreAlphabet, StateType initialState, SymbolType initialSymbol, std::set < StateType > finalStates ) : std::Components < DPDA, SymbolType, std::tuple < InputAlphabet, PushdownStoreAlphabet >, std::tuple < InitialSymbol >, StateType, std::tuple < States, FinalStates >, std::tuple < InitialState > > ( std::make_tuple ( std::move ( inputAlphabet ), std::move ( pushdownStoreAlphabet ) ), std::make_tuple ( std::move ( initialSymbol ) ), std::make_tuple ( std::move ( states ), std::move ( finalStates ) ), std::make_tuple ( std::move ( initialState ) ) ) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::DPDA ( std::set < StateType > states, std::set < InputSymbolType > inputAlphabet, std::set < PushdownStoreSymbolType > pushdownStoreAlphabet, StateType initialState, PushdownStoreSymbolType initialSymbol, std::set < StateType > finalStates ) : std::Components < DPDA, InputSymbolType, std::tuple < InputAlphabet >, std::tuple < >, PushdownStoreSymbolType, std::tuple < PushdownStoreAlphabet >, std::tuple < InitialSymbol >, StateType, std::tuple < States, FinalStates >, std::tuple < InitialState > > ( std::make_tuple ( std::move ( inputAlphabet ) ), std::tuple < > ( ), std::make_tuple ( std::move ( pushdownStoreAlphabet ) ), std::make_tuple ( std::move ( initialSymbol ) ), std::make_tuple ( std::move ( states ), std::move ( finalStates ) ), std::make_tuple ( std::move ( initialState ) ) ) { } -template < class SymbolType, class EpsilonType, class StateType > -DPDA < SymbolType, EpsilonType, StateType >::DPDA(StateType initialState, SymbolType initialPushdownSymbol) : DPDA ( std::set < StateType > { initialState }, std::set < SymbolType > { }, std::set < SymbolType > { initialPushdownSymbol }, initialState, initialPushdownSymbol, std::set < StateType > { }) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::DPDA ( StateType initialState, PushdownStoreSymbolType initialPushdownSymbol) : DPDA ( std::set < StateType > { initialState }, std::set < InputSymbolType > { }, std::set < PushdownStoreSymbolType > { initialPushdownSymbol }, initialState, initialPushdownSymbol, std::set < StateType > { }) { } -template < class SymbolType, class EpsilonType, class StateType > -AutomatonBase* DPDA < SymbolType, EpsilonType, StateType >::clone() const { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +AutomatonBase* DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::clone() const { return new DPDA(*this); } -template < class SymbolType, class EpsilonType, class StateType > -AutomatonBase* DPDA < SymbolType, EpsilonType, StateType >::plunder() && { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +AutomatonBase* DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::plunder() && { return new DPDA(std::move(*this)); } -template < class SymbolType, class EpsilonType, class StateType > -bool DPDA < SymbolType, EpsilonType, StateType >::addTransition(StateType from, std::variant<EpsilonType, SymbolType> input, std::vector<SymbolType> pop, StateType to, std::vector<SymbolType> push) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +bool DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::addTransition(StateType from, std::variant<EpsilonType, InputSymbolType> input, std::vector < PushdownStoreSymbolType > pop, StateType to, std::vector < PushdownStoreSymbolType > push) { if (! getStates().count(from)) { throw AutomatonException("State \"" + std::to_string ( from ) + "\" doesn't exist."); } - if (input.template is<SymbolType>() && ! getInputAlphabet().count(input.template get<SymbolType>())) { - throw AutomatonException("Input symbol \"" + std::to_string ( input.template get<SymbolType>() ) + "\" doesn't exist."); + if (input.template is < InputSymbolType > ( ) && ! getInputAlphabet().count ( input.template get < InputSymbolType > ( ) ) ) { + throw AutomatonException("Input symbol \"" + std::to_string ( input.template get < InputSymbolType > ( ) ) + "\" doesn't exist."); } if (! getStates().count(to)) { throw AutomatonException("State \"" + std::to_string ( to ) + "\" doesn't exist."); } - for(const SymbolType& popSymbol : pop) { + for(const PushdownStoreSymbolType & popSymbol : pop) { if (! getPushdownStoreAlphabet().count(popSymbol)) { throw AutomatonException("Pushdown store symbol \"" + std::to_string ( popSymbol ) + "\" doesn't exist."); } } - for(const SymbolType& pushSymbol : push) { + for(const PushdownStoreSymbolType & pushSymbol : push) { if (! getPushdownStoreAlphabet().count(pushSymbol)) { throw AutomatonException("Pushdown store symbol \"" + std::to_string ( pushSymbol ) + "\" doesn't exist."); } } - std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> > key(std::move(from), std::move(input), std::move(pop)); - std::pair<StateType, std::vector<SymbolType> > value = std::make_pair(std::move(to), std::move(push)); + std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> > key(std::move(from), std::move(input), std::move(pop)); + std::pair<StateType, std::vector<PushdownStoreSymbolType> > value = std::make_pair(std::move(to), std::move(push)); if (transitions.find(key) != transitions.end()) { if(transitions.find(key)->second == value) return false; - else if (std::get<1>(key).template is<SymbolType>()) + else if (std::get<1>(key).template is<InputSymbolType>()) throw AutomatonException( - "Transition (\"" + std::to_string ( std::get<0>(key) ) + "\", \"" + std::to_string ( std::get<1>(key).template get<SymbolType>() ) + "\", \"pop\") -> ?? already exists."); + "Transition (\"" + std::to_string ( std::get<0>(key) ) + "\", \"" + std::to_string ( std::get<1>(key).template get<InputSymbolType>() ) + "\", \"pop\") -> ?? already exists."); else throw AutomatonException( "Transition (\"" + std::to_string ( std::get<0>(key) ) + "\", \"" + std::to_string ( std::get<1>(key).template get<EpsilonType>() ) + "\", \"pop\") -> ?? already exists."); } if(std::get<1>(key).template is<EpsilonType>()) { - if(std::any_of(transitions.begin(), transitions.end(), [&](const std::pair<const std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > > & transition) { + if(std::any_of(transitions.begin(), transitions.end(), [&](const std::pair<const std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > > & transition) { if(std::get<0>(transition.first) == std::get<0>(key)) { - const std::vector<SymbolType>& alpha = std::get<2>(transition.first); - const std::vector<SymbolType>& beta = std::get<2>(key); + const std::vector<PushdownStoreSymbolType>& alpha = std::get<2>(transition.first); + const std::vector<PushdownStoreSymbolType>& beta = std::get<2>(key); - const std::vector<SymbolType>& shorter = (alpha.size() < beta.size()) ? alpha : beta; - const std::vector<SymbolType>& longer = (alpha.size() < beta.size()) ? beta : alpha; + const std::vector<PushdownStoreSymbolType>& shorter = (alpha.size() < beta.size()) ? alpha : beta; + const std::vector<PushdownStoreSymbolType>& longer = (alpha.size() < beta.size()) ? beta : alpha; for(auto itS = shorter.begin(), itL = longer.begin(); itS != shorter.end(); ++itS, ++itL) { if(*itS != *itL) return false; @@ -283,13 +283,13 @@ bool DPDA < SymbolType, EpsilonType, StateType >::addTransition(StateType from, })) throw AutomatonException("Conflicting transition"); } else { - if(std::any_of(transitions.begin(), transitions.end(), [&](const std::pair<const std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > > & transition) { + if(std::any_of(transitions.begin(), transitions.end(), [&](const std::pair<const std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > > & transition) { if(std::get<0>(transition.first) == std::get<0>(key) && ( std::get<1>(transition.first) == std::get<1>(key) || std::get<1>(transition.first).template is<EpsilonType>() )) { - const std::vector<SymbolType>& alpha = std::get<2>(transition.first); - const std::vector<SymbolType>& beta = std::get<2>(key); + const std::vector<PushdownStoreSymbolType>& alpha = std::get<2>(transition.first); + const std::vector<PushdownStoreSymbolType>& beta = std::get<2>(key); - const std::vector<SymbolType>& shorter = (alpha.size() < beta.size()) ? alpha : beta; - const std::vector<SymbolType>& longer = (alpha.size() < beta.size()) ? beta : alpha; + const std::vector<PushdownStoreSymbolType>& shorter = (alpha.size() < beta.size()) ? alpha : beta; + const std::vector<PushdownStoreSymbolType>& longer = (alpha.size() < beta.size()) ? beta : alpha; for(auto itS = shorter.begin(), itL = longer.begin(); itS != shorter.end(); ++itS, ++itL) { if(*itS != *itL) return false; @@ -305,30 +305,30 @@ bool DPDA < SymbolType, EpsilonType, StateType >::addTransition(StateType from, return true; } -template < class SymbolType, class EpsilonType, class StateType > -bool DPDA < SymbolType, EpsilonType, StateType >::addTransition(StateType from, SymbolType input, std::vector<SymbolType> pop, StateType to, std::vector<SymbolType> push) { - std::variant<EpsilonType, SymbolType> inputVariant(std::move(input)); +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +bool DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::addTransition(StateType from, InputSymbolType input, std::vector < PushdownStoreSymbolType > pop, StateType to, std::vector < PushdownStoreSymbolType > push) { + std::variant<EpsilonType, InputSymbolType> inputVariant(std::move(input)); return addTransition(std::move(from), std::move(inputVariant), std::move(pop), std::move(to), std::move(push)); } -template < class SymbolType, class EpsilonType, class StateType > -bool DPDA < SymbolType, EpsilonType, StateType >::addTransition(StateType from, std::vector<SymbolType> pop, StateType to, std::vector<SymbolType> push) { - auto inputVariant = std::variant<EpsilonType, SymbolType>::template from < EpsilonType > ( ); +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +bool DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::addTransition(StateType from, std::vector < PushdownStoreSymbolType > pop, StateType to, std::vector < PushdownStoreSymbolType > push) { + auto inputVariant = std::variant<EpsilonType, InputSymbolType>::template from < EpsilonType > ( ); return addTransition(std::move(from), std::move(inputVariant), std::move(pop), std::move(to), std::move(push)); } -template < class SymbolType, class EpsilonType, class StateType > -bool DPDA < SymbolType, EpsilonType, StateType >::removeTransition(const StateType& from, const std::variant<EpsilonType, SymbolType>& input, const std::vector<SymbolType>& pop, const StateType& to, const std::vector<SymbolType>& push) { - std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> > key(from, input, pop); - std::pair<StateType, std::vector<SymbolType> > value = std::make_pair(to, push); +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +bool DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::removeTransition(const StateType& from, const std::variant<EpsilonType, InputSymbolType>& input, const std::vector < PushdownStoreSymbolType > & pop, const StateType& to, const std::vector < PushdownStoreSymbolType > & push) { + std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector < PushdownStoreSymbolType > > key(from, input, pop); + std::pair<StateType, std::vector < PushdownStoreSymbolType > > value = std::make_pair(to, push); if (transitions.find(key) == transitions.end()) return false; if(transitions.find(key)->second != value) { - if (input.template is<SymbolType>()) + if (input.template is < InputSymbolType > ( ) ) throw AutomatonException( - "Transition (\"" + std::to_string ( from ) + "\", \"" + std::to_string ( input.template get<SymbolType>() ) + "\") -> \"to\" doesn't exist."); + "Transition (\"" + std::to_string ( from ) + "\", \"" + std::to_string ( input.template get < InputSymbolType > ( ) ) + "\") -> \"to\" doesn't exist."); else throw AutomatonException( "Transition (\"" + std::to_string ( from ) + "\", \"" + std::to_string ( input.template get<EpsilonType>() ) + "\") -> \"to\" doesn't exist."); @@ -338,30 +338,30 @@ bool DPDA < SymbolType, EpsilonType, StateType >::removeTransition(const StateTy return true; } -template < class SymbolType, class EpsilonType, class StateType > -bool DPDA < SymbolType, EpsilonType, StateType >::removeTransition(const StateType& from, const SymbolType& input, const std::vector<SymbolType>& pop, const StateType& to, const std::vector<SymbolType>& push) { - std::variant<EpsilonType, SymbolType> inputVariant(input); +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +bool DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::removeTransition(const StateType& from, const InputSymbolType& input, const std::vector < PushdownStoreSymbolType > & pop, const StateType& to, const std::vector < PushdownStoreSymbolType > & push) { + std::variant<EpsilonType, InputSymbolType > inputVariant(input); return removeTransition(from, inputVariant, pop, to, push); } -template < class SymbolType, class EpsilonType, class StateType > -bool DPDA < SymbolType, EpsilonType, StateType >::removeTransition(const StateType& from, const std::vector<SymbolType>& pop, const StateType& to, const std::vector<SymbolType>& push) { - auto inputVariant = std::variant<EpsilonType, SymbolType>::template from < EpsilonType > ( ); +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +bool DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::removeTransition(const StateType& from, const std::vector < PushdownStoreSymbolType > & pop, const StateType& to, const std::vector < PushdownStoreSymbolType > & push) { + auto inputVariant = std::variant<EpsilonType, InputSymbolType >::template from < EpsilonType > ( ); return removeTransition(from, inputVariant, pop, to, push); } -template < class SymbolType, class EpsilonType, class StateType > -const std::map<std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > >& DPDA < SymbolType, EpsilonType, StateType >::getTransitions() const { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +const std::map<std::tuple<StateType, std::variant<EpsilonType, InputSymbolType >, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > >& DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::getTransitions() const { return transitions; } -template < class SymbolType, class EpsilonType, class StateType > -std::map<std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > > DPDA < SymbolType, EpsilonType, StateType >::getTransitionsFromState(const StateType& from) const { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +std::map<std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > > DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::getTransitionsFromState(const StateType& from) const { if( ! getStates().count(from) ) throw AutomatonException("State \"" + std::to_string ( from ) + "\" doesn't exist"); - std::map<std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > > transitionsFromState; - for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > >& transition : transitions) { + std::map<std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > > transitionsFromState; + for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > >& transition : transitions) { if (std::get<0>(transition.first) == from) { transitionsFromState.insert(std::make_pair(transition.first, transition.second)); } @@ -370,13 +370,13 @@ std::map<std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vecto return transitionsFromState; } -template < class SymbolType, class EpsilonType, class StateType > -std::map<std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > > DPDA < SymbolType, EpsilonType, StateType >::getTransitionsToState(const StateType& to) const { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +std::map<std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > > DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::getTransitionsToState(const StateType& to) const { if( ! getStates().count(to)) throw AutomatonException("State \"" + std::to_string ( to ) + "\" doesn't exist"); - std::map<std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > > transitionsToState; - for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > >& transition : transitions) { + std::map<std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > > transitionsToState; + for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > >& transition : transitions) { if (transition.second.first == to) { transitionsToState.insert(std::make_pair(transition.first, transition.second)); } @@ -385,8 +385,8 @@ std::map<std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vecto return transitionsToState; } -template < class SymbolType, class EpsilonType, class StateType > -int DPDA < SymbolType, EpsilonType, StateType >::compare(const DPDA& other) const { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +int DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::compare(const DPDA& other) const { auto first = std::tie(getStates(), getInputAlphabet(), getInitialState(), getFinalStates(), getPushdownStoreAlphabet(), getInitialSymbol(), transitions); auto second = std::tie(other.getStates(), other.getInputAlphabet(), other.getInitialState(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getInitialSymbol(), other.transitions); @@ -394,8 +394,8 @@ int DPDA < SymbolType, EpsilonType, StateType >::compare(const DPDA& other) cons return comp(first, second); } -template < class SymbolType, class EpsilonType, class StateType > -void DPDA < SymbolType, EpsilonType, StateType >::operator>>(std::ostream& out) const { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +void DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::operator>>(std::ostream& out) const { out << "(DPDA " << "states = " << getStates() << "inputAlphabet = " << getInputAlphabet() @@ -407,22 +407,22 @@ void DPDA < SymbolType, EpsilonType, StateType >::operator>>(std::ostream& out) << ")"; } -template < class SymbolType, class EpsilonType, class StateType > -DPDA < SymbolType, EpsilonType, StateType >::operator std::string () const { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::operator std::string () const { std::stringstream ss; ss << *this; return ss.str(); } -template < class SymbolType, class EpsilonType, class StateType > -DPDA < SymbolType, EpsilonType, StateType > DPDA < SymbolType, EpsilonType, StateType >::parse(std::deque<sax::Token>::iterator& input) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parse(std::deque<sax::Token>::iterator& input) { sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, DPDA::getXmlTagName()); std::set<StateType> states = AutomatonFromXMLParser::parseStates<StateType>(input); - std::set<SymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<SymbolType>(input); - std::set<SymbolType> pushdownStoreSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<SymbolType>(input); + std::set<InputSymbolType> inputSymbols = AutomatonFromXMLParser::parseInputAlphabet<InputSymbolType>(input); + std::set<PushdownStoreSymbolType> pushdownStoreSymbols = AutomatonFromXMLParser::parsePushdownStoreAlphabet<PushdownStoreSymbolType>(input); StateType initialState = AutomatonFromXMLParser::parseInitialState<StateType>(input); - SymbolType initialPushdownStoreSymbol = AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<SymbolType>(input); + PushdownStoreSymbolType initialPushdownStoreSymbol = AutomatonFromXMLParser::parseInitialPushdownStoreSymbol<PushdownStoreSymbolType>(input); std::set<StateType> finalStates = AutomatonFromXMLParser::parseFinalStates<StateType>(input); DPDA automaton(std::move(initialState), std::move(initialPushdownStoreSymbol)); @@ -437,21 +437,21 @@ DPDA < SymbolType, EpsilonType, StateType > DPDA < SymbolType, EpsilonType, Stat return automaton; } -template < class SymbolType, class EpsilonType, class StateType > -void DPDA < SymbolType, EpsilonType, StateType >::parseTransition(std::deque<sax::Token>::iterator& input, DPDA& automaton) { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +void DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::parseTransition(std::deque<sax::Token>::iterator& input, DPDA& automaton) { sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::START_ELEMENT, "transition"); StateType from = AutomatonFromXMLParser::parseTransitionFrom<StateType>(input); - std::variant<EpsilonType, SymbolType> inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, SymbolType>(input); - std::vector<SymbolType> pop = AutomatonFromXMLParser::parseTransitionPop<SymbolType>(input); + std::variant<EpsilonType, InputSymbolType> inputSymbol = AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol<EpsilonType, InputSymbolType>(input); + std::vector<PushdownStoreSymbolType> pop = AutomatonFromXMLParser::parseTransitionPop<PushdownStoreSymbolType>(input); StateType to = AutomatonFromXMLParser::parseTransitionTo<StateType>(input); - std::vector<SymbolType> push = AutomatonFromXMLParser::parseTransitionPush<SymbolType>(input); + std::vector<PushdownStoreSymbolType> push = AutomatonFromXMLParser::parseTransitionPush<PushdownStoreSymbolType>(input); sax::FromXMLParserHelper::popToken(input, sax::Token::TokenType::END_ELEMENT, "transition"); automaton.addTransition(std::move(from), std::move(inputSymbol), std::move(pop), std::move(to), std::move(push)); } -template < class SymbolType, class EpsilonType, class StateType > -void DPDA < SymbolType, EpsilonType, StateType >::compose(std::deque<sax::Token>& out) const { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +void DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::compose(std::deque<sax::Token>& out) const { out.emplace_back(DPDA::getXmlTagName(), sax::Token::TokenType::START_ELEMENT); AutomatonToXMLComposer::composeStates(out, this->getStates()); @@ -465,8 +465,8 @@ void DPDA < SymbolType, EpsilonType, StateType >::compose(std::deque<sax::Token> out.emplace_back(DPDA::getXmlTagName(), sax::Token::TokenType::END_ELEMENT); } -template < class SymbolType, class EpsilonType, class StateType > -void DPDA < SymbolType, EpsilonType, StateType >::composeTransitions(std::deque<sax::Token>& out) const { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +void DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::composeTransitions(std::deque<sax::Token>& out) const { out.emplace_back("transitions", sax::Token::TokenType::START_ELEMENT); for(const auto& transition : this->getTransitions()) { out.emplace_back("transition", sax::Token::TokenType::START_ELEMENT); @@ -483,8 +483,8 @@ void DPDA < SymbolType, EpsilonType, StateType >::composeTransitions(std::deque< out.emplace_back("transitions", sax::Token::TokenType::END_ELEMENT); } -template < class SymbolType, class EpsilonType, class StateType > -alib::ObjectBase* DPDA < SymbolType, EpsilonType, StateType >::inc() && { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +alib::ObjectBase* DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >::inc() && { return new alib::UniqueObject(alib::Object(std::move(*this)), primitive::Integer(0)); } @@ -492,33 +492,33 @@ alib::ObjectBase* DPDA < SymbolType, EpsilonType, StateType >::inc() && { namespace std { -template < class SymbolType, class EpsilonType, class StateType > -class ComponentConstraint< automaton::DPDA < SymbolType, EpsilonType, StateType >, SymbolType, automaton::InputAlphabet > { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +class ComponentConstraint< automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >, InputSymbolType, automaton::InputAlphabet > { public: - static bool used ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const SymbolType & symbol ) { - for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > >& transition : automaton.getTransitions()) - if (std::get<1>(transition.first).template is<SymbolType>() && symbol == std::get<1>(transition.first).template get<SymbolType>()) + static bool used ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const InputSymbolType & symbol ) { + for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > >& transition : automaton.getTransitions()) + if (std::get<1>(transition.first).template is<InputSymbolType>() && symbol == std::get<1>(transition.first).template get<InputSymbolType>()) return true; return false; } - static bool available ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const SymbolType & ) { + static bool available ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const InputSymbolType & ) { return true; } - static void valid ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const SymbolType & ) { + static void valid ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const InputSymbolType & ) { } }; -template < class SymbolType, class EpsilonType, class StateType > -class ComponentConstraint< automaton::DPDA < SymbolType, EpsilonType, StateType >, SymbolType, automaton::PushdownStoreAlphabet > { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +class ComponentConstraint< automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >, PushdownStoreSymbolType, automaton::PushdownStoreAlphabet > { public: - static bool used ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const SymbolType & symbol ) { + static bool used ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const PushdownStoreSymbolType & symbol ) { if(automaton.getInitialSymbol() == symbol) return true; - for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > >& transition : automaton.getTransitions()) { + for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > >& transition : automaton.getTransitions()) { const auto & popSymbols = std::get<2>(transition.first); const auto & pushSymbols = transition.second.second; if(std::contains(popSymbols.begin(), popSymbols.end(), symbol ) || std::contains(pushSymbols.begin(), pushSymbols.end(), symbol)) @@ -528,73 +528,73 @@ public: return false; } - static bool available ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const SymbolType & ) { + static bool available ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const PushdownStoreSymbolType & ) { return true; } - static void valid ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const SymbolType & ) { + static void valid ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const PushdownStoreSymbolType & ) { } }; -template < class SymbolType, class EpsilonType, class StateType > -class ElementConstraint< automaton::DPDA < SymbolType, EpsilonType, StateType >, SymbolType, automaton::InitialSymbol > { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +class ElementConstraint< automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >, PushdownStoreSymbolType, automaton::InitialSymbol > { public: - static bool available ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const SymbolType & symbol ) { + static bool available ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const PushdownStoreSymbolType & symbol ) { return automaton.template accessComponent < automaton::PushdownStoreAlphabet > ( ).get ( ).count ( symbol ); } - static void valid ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const SymbolType & ) { + static void valid ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const PushdownStoreSymbolType & ) { } }; -template < class SymbolType, class EpsilonType, class StateType > -class ComponentConstraint< automaton::DPDA < SymbolType, EpsilonType, StateType >, StateType, automaton::States > { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +class ComponentConstraint< automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >, StateType, automaton::States > { public: - static bool used ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const StateType & state ) { + static bool used ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const StateType & state ) { if ( automaton.getInitialState ( ) == state ) return true; if ( automaton.getFinalStates ( ).count ( state ) ) return true; - for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, SymbolType>, std::vector<SymbolType> >, std::pair<StateType, std::vector<SymbolType> > >& transition : automaton.getTransitions()) + for (const std::pair<const std::tuple<StateType, std::variant<EpsilonType, InputSymbolType>, std::vector<PushdownStoreSymbolType> >, std::pair<StateType, std::vector<PushdownStoreSymbolType> > >& transition : automaton.getTransitions()) if ( state == std::get<0>(transition.first) || transition.second.first == state ) return true; return false; } - static bool available ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const StateType & ) { + static bool available ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const StateType & ) { return true; } - static void valid ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const StateType & ) { + static void valid ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const StateType & ) { } }; -template < class SymbolType, class EpsilonType, class StateType > -class ComponentConstraint< automaton::DPDA < SymbolType, EpsilonType, StateType >, StateType, automaton::FinalStates > { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +class ComponentConstraint< automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >, StateType, automaton::FinalStates > { public: - static bool used ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const StateType & ) { + static bool used ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const StateType & ) { return false; } - static bool available ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const StateType & state ) { + static bool available ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const StateType & state ) { return automaton.template accessComponent < automaton::States > ( ).get ( ).count ( state ); } - static void valid ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const StateType & ) { + static void valid ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const StateType & ) { } }; -template < class SymbolType, class EpsilonType, class StateType > -class ElementConstraint< automaton::DPDA < SymbolType, EpsilonType, StateType >, StateType, automaton::InitialState > { +template < class InputSymbolType, class EpsilonType, class PushdownStoreSymbolType, class StateType > +class ElementConstraint< automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType >, StateType, automaton::InitialState > { public: - static bool available ( const automaton::DPDA < SymbolType, EpsilonType, StateType > & automaton, const StateType & state ) { + static bool available ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > & automaton, const StateType & state ) { return automaton.template accessComponent < automaton::States > ( ).get ( ).count ( state ); } - static void valid ( const automaton::DPDA < SymbolType, EpsilonType, StateType > &, const StateType & ) { + static void valid ( const automaton::DPDA < InputSymbolType, EpsilonType, PushdownStoreSymbolType, StateType > &, const StateType & ) { } }; diff --git a/examples2/automaton/NPDA1.DET.xml b/examples2/automaton/NPDA1.DET.xml index fa267e7c5b9b29eb5c544ee77bf931ee2ac37627..f2080dbf4f4a275039d809630f6a2b3ce2ddf86e 100644 --- a/examples2/automaton/NPDA1.DET.xml +++ b/examples2/automaton/NPDA1.DET.xml @@ -26,54 +26,54 @@ <String>a2</String> </inputAlphabet> <pushdownStoreAlphabet> - <Integer>0</Integer> - <Integer>1</Integer> - <Integer>2</Integer> - <Integer>3</Integer> - <Integer>4</Integer> - <Integer>5</Integer> - <Integer>6</Integer> - <Integer>7</Integer> - <Integer>8</Integer> - <Integer>9</Integer> - <Integer>10</Integer> - <Integer>11</Integer> - <Integer>12</Integer> - <Integer>13</Integer> - <Integer>14</Integer> - <Integer>15</Integer> - <Integer>16</Integer> - <Integer>17</Integer> - <Integer>18</Integer> - <Integer>19</Integer> - <Integer>20</Integer> - <Integer>21</Integer> - <Integer>22</Integer> - <Integer>23</Integer> - <Integer>24</Integer> - <Integer>25</Integer> - <Integer>26</Integer> - <Integer>27</Integer> - <Integer>28</Integer> - <Integer>29</Integer> - <Integer>30</Integer> - <Integer>31</Integer> - <Integer>32</Integer> - <Integer>33</Integer> - <Integer>34</Integer> - <Integer>35</Integer> - <Integer>36</Integer> - <Integer>37</Integer> - <Integer>38</Integer> - <Integer>39</Integer> - <Integer>40</Integer> - <Integer>41</Integer> + <Unsigned>0</Unsigned> + <Unsigned>1</Unsigned> + <Unsigned>2</Unsigned> + <Unsigned>3</Unsigned> + <Unsigned>4</Unsigned> + <Unsigned>5</Unsigned> + <Unsigned>6</Unsigned> + <Unsigned>7</Unsigned> + <Unsigned>8</Unsigned> + <Unsigned>9</Unsigned> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> + <Unsigned>12</Unsigned> + <Unsigned>13</Unsigned> + <Unsigned>14</Unsigned> + <Unsigned>15</Unsigned> + <Unsigned>16</Unsigned> + <Unsigned>17</Unsigned> + <Unsigned>18</Unsigned> + <Unsigned>19</Unsigned> + <Unsigned>20</Unsigned> + <Unsigned>21</Unsigned> + <Unsigned>22</Unsigned> + <Unsigned>23</Unsigned> + <Unsigned>24</Unsigned> + <Unsigned>25</Unsigned> + <Unsigned>26</Unsigned> + <Unsigned>27</Unsigned> + <Unsigned>28</Unsigned> + <Unsigned>29</Unsigned> + <Unsigned>30</Unsigned> + <Unsigned>31</Unsigned> + <Unsigned>32</Unsigned> + <Unsigned>33</Unsigned> + <Unsigned>34</Unsigned> + <Unsigned>35</Unsigned> + <Unsigned>36</Unsigned> + <Unsigned>37</Unsigned> + <Unsigned>38</Unsigned> + <Unsigned>39</Unsigned> + <Unsigned>40</Unsigned> + <Unsigned>41</Unsigned> </pushdownStoreAlphabet> <initialState> <Unsigned>0</Unsigned> </initialState> <initialPushdownStoreSymbol> - <Integer>0</Integer> + <Unsigned>0</Unsigned> </initialPushdownStoreSymbol> <finalStates> <Unsigned>11</Unsigned> @@ -93,7 +93,7 @@ <String>a0</String> </input> <pop> - <Integer>0</Integer> + <Unsigned>0</Unsigned> </pop> <to> <Unsigned>1</Unsigned> @@ -108,7 +108,7 @@ <String>a0</String> </input> <pop> - <Integer>1</Integer> + <Unsigned>1</Unsigned> </pop> <to> <Unsigned>1</Unsigned> @@ -123,13 +123,13 @@ <String>a1</String> </input> <pop> - <Integer>0</Integer> + <Unsigned>0</Unsigned> </pop> <to> <Unsigned>0</Unsigned> </to> <push> - <Integer>1</Integer> + <Unsigned>1</Unsigned> </push> </transition> <transition> @@ -140,13 +140,13 @@ <String>a1</String> </input> <pop> - <Integer>1</Integer> + <Unsigned>1</Unsigned> </pop> <to> <Unsigned>0</Unsigned> </to> <push> - <Integer>1</Integer> + <Unsigned>1</Unsigned> </push> </transition> <transition> @@ -157,14 +157,14 @@ <String>a2</String> </input> <pop> - <Integer>0</Integer> + <Unsigned>0</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>2</Integer> - <Integer>3</Integer> + <Unsigned>2</Unsigned> + <Unsigned>3</Unsigned> </push> </transition> <transition> @@ -175,14 +175,14 @@ <String>a2</String> </input> <pop> - <Integer>1</Integer> + <Unsigned>1</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>2</Integer> - <Integer>3</Integer> + <Unsigned>2</Unsigned> + <Unsigned>3</Unsigned> </push> </transition> <transition> @@ -193,7 +193,7 @@ <String>a0</String> </input> <pop> - <Integer>2</Integer> + <Unsigned>2</Unsigned> </pop> <to> <Unsigned>3</Unsigned> @@ -208,7 +208,7 @@ <String>a0</String> </input> <pop> - <Integer>4</Integer> + <Unsigned>4</Unsigned> </pop> <to> <Unsigned>3</Unsigned> @@ -223,7 +223,7 @@ <String>a0</String> </input> <pop> - <Integer>5</Integer> + <Unsigned>5</Unsigned> </pop> <to> <Unsigned>4</Unsigned> @@ -238,7 +238,7 @@ <String>a0</String> </input> <pop> - <Integer>7</Integer> + <Unsigned>7</Unsigned> </pop> <to> <Unsigned>4</Unsigned> @@ -253,7 +253,7 @@ <String>a0</String> </input> <pop> - <Integer>9</Integer> + <Unsigned>9</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -268,7 +268,7 @@ <String>a0</String> </input> <pop> - <Integer>10</Integer> + <Unsigned>10</Unsigned> </pop> <to> <Unsigned>6</Unsigned> @@ -283,7 +283,7 @@ <String>a0</String> </input> <pop> - <Integer>12</Integer> + <Unsigned>12</Unsigned> </pop> <to> <Unsigned>6</Unsigned> @@ -298,7 +298,7 @@ <String>a0</String> </input> <pop> - <Integer>13</Integer> + <Unsigned>13</Unsigned> </pop> <to> <Unsigned>9</Unsigned> @@ -313,7 +313,7 @@ <String>a0</String> </input> <pop> - <Integer>15</Integer> + <Unsigned>15</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -328,7 +328,7 @@ <String>a0</String> </input> <pop> - <Integer>16</Integer> + <Unsigned>16</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -343,7 +343,7 @@ <String>a0</String> </input> <pop> - <Integer>19</Integer> + <Unsigned>19</Unsigned> </pop> <to> <Unsigned>9</Unsigned> @@ -358,13 +358,13 @@ <String>a1</String> </input> <pop> - <Integer>2</Integer> + <Unsigned>2</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>4</Integer> + <Unsigned>4</Unsigned> </push> </transition> <transition> @@ -375,13 +375,13 @@ <String>a1</String> </input> <pop> - <Integer>4</Integer> + <Unsigned>4</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>4</Integer> + <Unsigned>4</Unsigned> </push> </transition> <transition> @@ -392,13 +392,13 @@ <String>a1</String> </input> <pop> - <Integer>5</Integer> + <Unsigned>5</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>7</Integer> + <Unsigned>7</Unsigned> </push> </transition> <transition> @@ -409,13 +409,13 @@ <String>a1</String> </input> <pop> - <Integer>7</Integer> + <Unsigned>7</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>7</Integer> + <Unsigned>7</Unsigned> </push> </transition> <transition> @@ -426,13 +426,13 @@ <String>a1</String> </input> <pop> - <Integer>9</Integer> + <Unsigned>9</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>9</Integer> + <Unsigned>9</Unsigned> </push> </transition> <transition> @@ -443,13 +443,13 @@ <String>a1</String> </input> <pop> - <Integer>10</Integer> + <Unsigned>10</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>12</Integer> + <Unsigned>12</Unsigned> </push> </transition> <transition> @@ -460,13 +460,13 @@ <String>a1</String> </input> <pop> - <Integer>12</Integer> + <Unsigned>12</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>12</Integer> + <Unsigned>12</Unsigned> </push> </transition> <transition> @@ -477,13 +477,13 @@ <String>a1</String> </input> <pop> - <Integer>13</Integer> + <Unsigned>13</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>19</Integer> + <Unsigned>19</Unsigned> </push> </transition> <transition> @@ -494,13 +494,13 @@ <String>a1</String> </input> <pop> - <Integer>15</Integer> + <Unsigned>15</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>15</Integer> + <Unsigned>15</Unsigned> </push> </transition> <transition> @@ -511,13 +511,13 @@ <String>a1</String> </input> <pop> - <Integer>16</Integer> + <Unsigned>16</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>16</Integer> + <Unsigned>16</Unsigned> </push> </transition> <transition> @@ -528,13 +528,13 @@ <String>a1</String> </input> <pop> - <Integer>19</Integer> + <Unsigned>19</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>19</Integer> + <Unsigned>19</Unsigned> </push> </transition> <transition> @@ -545,14 +545,14 @@ <String>a2</String> </input> <pop> - <Integer>2</Integer> + <Unsigned>2</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>5</Integer> - <Integer>6</Integer> + <Unsigned>5</Unsigned> + <Unsigned>6</Unsigned> </push> </transition> <transition> @@ -563,14 +563,14 @@ <String>a2</String> </input> <pop> - <Integer>4</Integer> + <Unsigned>4</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>5</Integer> - <Integer>6</Integer> + <Unsigned>5</Unsigned> + <Unsigned>6</Unsigned> </push> </transition> <transition> @@ -581,14 +581,14 @@ <String>a2</String> </input> <pop> - <Integer>5</Integer> + <Unsigned>5</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>5</Integer> - <Integer>8</Integer> + <Unsigned>5</Unsigned> + <Unsigned>8</Unsigned> </push> </transition> <transition> @@ -599,14 +599,14 @@ <String>a2</String> </input> <pop> - <Integer>7</Integer> + <Unsigned>7</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>5</Integer> - <Integer>8</Integer> + <Unsigned>5</Unsigned> + <Unsigned>8</Unsigned> </push> </transition> <transition> @@ -617,14 +617,14 @@ <String>a2</String> </input> <pop> - <Integer>9</Integer> + <Unsigned>9</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -635,14 +635,14 @@ <String>a2</String> </input> <pop> - <Integer>10</Integer> + <Unsigned>10</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>14</Integer> + <Unsigned>13</Unsigned> + <Unsigned>14</Unsigned> </push> </transition> <transition> @@ -653,14 +653,14 @@ <String>a2</String> </input> <pop> - <Integer>12</Integer> + <Unsigned>12</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>14</Integer> + <Unsigned>13</Unsigned> + <Unsigned>14</Unsigned> </push> </transition> <transition> @@ -671,14 +671,14 @@ <String>a2</String> </input> <pop> - <Integer>13</Integer> + <Unsigned>13</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>20</Integer> + <Unsigned>13</Unsigned> + <Unsigned>20</Unsigned> </push> </transition> <transition> @@ -689,14 +689,14 @@ <String>a2</String> </input> <pop> - <Integer>15</Integer> + <Unsigned>15</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -707,14 +707,14 @@ <String>a2</String> </input> <pop> - <Integer>16</Integer> + <Unsigned>16</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -725,14 +725,14 @@ <String>a2</String> </input> <pop> - <Integer>19</Integer> + <Unsigned>19</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>20</Integer> + <Unsigned>13</Unsigned> + <Unsigned>20</Unsigned> </push> </transition> <transition> @@ -743,7 +743,7 @@ <String>a0</String> </input> <pop> - <Integer>3</Integer> + <Unsigned>3</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -758,13 +758,13 @@ <String>a1</String> </input> <pop> - <Integer>3</Integer> + <Unsigned>3</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>9</Integer> + <Unsigned>9</Unsigned> </push> </transition> <transition> @@ -775,14 +775,14 @@ <String>a2</String> </input> <pop> - <Integer>3</Integer> + <Unsigned>3</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -793,7 +793,7 @@ <String>a0</String> </input> <pop> - <Integer>6</Integer> + <Unsigned>6</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -808,7 +808,7 @@ <String>a0</String> </input> <pop> - <Integer>8</Integer> + <Unsigned>8</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -823,13 +823,13 @@ <String>a1</String> </input> <pop> - <Integer>6</Integer> + <Unsigned>6</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>15</Integer> + <Unsigned>15</Unsigned> </push> </transition> <transition> @@ -840,13 +840,13 @@ <String>a1</String> </input> <pop> - <Integer>8</Integer> + <Unsigned>8</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>16</Integer> + <Unsigned>16</Unsigned> </push> </transition> <transition> @@ -857,14 +857,14 @@ <String>a2</String> </input> <pop> - <Integer>6</Integer> + <Unsigned>6</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -875,14 +875,14 @@ <String>a2</String> </input> <pop> - <Integer>8</Integer> + <Unsigned>8</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -893,7 +893,7 @@ <String>a0</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -908,13 +908,13 @@ <String>a1</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -925,14 +925,14 @@ <String>a2</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -943,7 +943,7 @@ <String>a0</String> </input> <pop> - <Integer>3</Integer> + <Unsigned>3</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -958,7 +958,7 @@ <String>a0</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -973,7 +973,7 @@ <String>a0</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -988,13 +988,13 @@ <String>a1</String> </input> <pop> - <Integer>3</Integer> + <Unsigned>3</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -1005,13 +1005,13 @@ <String>a1</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -1022,13 +1022,13 @@ <String>a1</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -1039,14 +1039,14 @@ <String>a2</String> </input> <pop> - <Integer>3</Integer> + <Unsigned>3</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -1057,14 +1057,14 @@ <String>a2</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -1075,14 +1075,14 @@ <String>a2</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -1093,7 +1093,7 @@ <String>a0</String> </input> <pop> - <Integer>6</Integer> + <Unsigned>6</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -1108,7 +1108,7 @@ <String>a0</String> </input> <pop> - <Integer>8</Integer> + <Unsigned>8</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -1123,7 +1123,7 @@ <String>a0</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -1138,7 +1138,7 @@ <String>a0</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -1153,7 +1153,7 @@ <String>a0</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -1168,7 +1168,7 @@ <String>a0</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -1183,7 +1183,7 @@ <String>a0</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -1198,7 +1198,7 @@ <String>a0</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -1213,7 +1213,7 @@ <String>a0</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -1228,7 +1228,7 @@ <String>a0</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -1243,7 +1243,7 @@ <String>a0</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -1258,7 +1258,7 @@ <String>a0</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -1273,13 +1273,13 @@ <String>a1</String> </input> <pop> - <Integer>6</Integer> + <Unsigned>6</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -1290,13 +1290,13 @@ <String>a1</String> </input> <pop> - <Integer>8</Integer> + <Unsigned>8</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -1307,13 +1307,13 @@ <String>a1</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -1324,13 +1324,13 @@ <String>a1</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -1341,13 +1341,13 @@ <String>a1</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -1358,13 +1358,13 @@ <String>a1</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -1375,13 +1375,13 @@ <String>a1</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -1392,13 +1392,13 @@ <String>a1</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -1409,13 +1409,13 @@ <String>a1</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -1426,13 +1426,13 @@ <String>a1</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -1443,13 +1443,13 @@ <String>a1</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -1460,13 +1460,13 @@ <String>a1</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -1477,14 +1477,14 @@ <String>a2</String> </input> <pop> - <Integer>6</Integer> + <Unsigned>6</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -1495,14 +1495,14 @@ <String>a2</String> </input> <pop> - <Integer>8</Integer> + <Unsigned>8</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -1513,14 +1513,14 @@ <String>a2</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -1531,14 +1531,14 @@ <String>a2</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -1549,14 +1549,14 @@ <String>a2</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -1567,14 +1567,14 @@ <String>a2</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -1585,14 +1585,14 @@ <String>a2</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -1603,14 +1603,14 @@ <String>a2</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -1621,14 +1621,14 @@ <String>a2</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -1639,14 +1639,14 @@ <String>a2</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -1657,14 +1657,14 @@ <String>a2</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -1675,14 +1675,14 @@ <String>a2</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -1693,7 +1693,7 @@ <String>a0</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -1708,7 +1708,7 @@ <String>a0</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -1723,7 +1723,7 @@ <String>a0</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -1738,7 +1738,7 @@ <String>a0</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -1753,13 +1753,13 @@ <String>a1</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>24</Integer> + <Unsigned>24</Unsigned> </push> </transition> <transition> @@ -1770,13 +1770,13 @@ <String>a1</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -1787,13 +1787,13 @@ <String>a1</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -1804,13 +1804,13 @@ <String>a1</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>25</Integer> + <Unsigned>25</Unsigned> </push> </transition> <transition> @@ -1821,14 +1821,14 @@ <String>a2</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -1839,14 +1839,14 @@ <String>a2</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -1857,14 +1857,14 @@ <String>a2</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -1875,14 +1875,14 @@ <String>a2</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -1893,7 +1893,7 @@ <String>a0</String> </input> <pop> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </pop> <to> <Unsigned>11</Unsigned> @@ -1908,7 +1908,7 @@ <String>a0</String> </input> <pop> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </pop> <to> <Unsigned>12</Unsigned> @@ -1923,7 +1923,7 @@ <String>a0</String> </input> <pop> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </pop> <to> <Unsigned>13</Unsigned> @@ -1938,7 +1938,7 @@ <String>a0</String> </input> <pop> - <Integer>24</Integer> + <Unsigned>24</Unsigned> </pop> <to> <Unsigned>14</Unsigned> @@ -1953,7 +1953,7 @@ <String>a0</String> </input> <pop> - <Integer>25</Integer> + <Unsigned>25</Unsigned> </pop> <to> <Unsigned>15</Unsigned> @@ -1968,7 +1968,7 @@ <String>a0</String> </input> <pop> - <Integer>26</Integer> + <Unsigned>26</Unsigned> </pop> <to> <Unsigned>11</Unsigned> @@ -1983,7 +1983,7 @@ <String>a0</String> </input> <pop> - <Integer>27</Integer> + <Unsigned>27</Unsigned> </pop> <to> <Unsigned>12</Unsigned> @@ -1998,7 +1998,7 @@ <String>a0</String> </input> <pop> - <Integer>28</Integer> + <Unsigned>28</Unsigned> </pop> <to> <Unsigned>13</Unsigned> @@ -2013,7 +2013,7 @@ <String>a0</String> </input> <pop> - <Integer>29</Integer> + <Unsigned>29</Unsigned> </pop> <to> <Unsigned>14</Unsigned> @@ -2028,7 +2028,7 @@ <String>a0</String> </input> <pop> - <Integer>30</Integer> + <Unsigned>30</Unsigned> </pop> <to> <Unsigned>15</Unsigned> @@ -2043,7 +2043,7 @@ <String>a0</String> </input> <pop> - <Integer>31</Integer> + <Unsigned>31</Unsigned> </pop> <to> <Unsigned>16</Unsigned> @@ -2058,7 +2058,7 @@ <String>a0</String> </input> <pop> - <Integer>33</Integer> + <Unsigned>33</Unsigned> </pop> <to> <Unsigned>17</Unsigned> @@ -2073,7 +2073,7 @@ <String>a0</String> </input> <pop> - <Integer>38</Integer> + <Unsigned>38</Unsigned> </pop> <to> <Unsigned>16</Unsigned> @@ -2088,7 +2088,7 @@ <String>a0</String> </input> <pop> - <Integer>39</Integer> + <Unsigned>39</Unsigned> </pop> <to> <Unsigned>17</Unsigned> @@ -2103,13 +2103,13 @@ <String>a1</String> </input> <pop> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>26</Integer> + <Unsigned>26</Unsigned> </push> </transition> <transition> @@ -2120,13 +2120,13 @@ <String>a1</String> </input> <pop> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>27</Integer> + <Unsigned>27</Unsigned> </push> </transition> <transition> @@ -2137,13 +2137,13 @@ <String>a1</String> </input> <pop> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>28</Integer> + <Unsigned>28</Unsigned> </push> </transition> <transition> @@ -2154,13 +2154,13 @@ <String>a1</String> </input> <pop> - <Integer>24</Integer> + <Unsigned>24</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>29</Integer> + <Unsigned>29</Unsigned> </push> </transition> <transition> @@ -2171,13 +2171,13 @@ <String>a1</String> </input> <pop> - <Integer>25</Integer> + <Unsigned>25</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>30</Integer> + <Unsigned>30</Unsigned> </push> </transition> <transition> @@ -2188,13 +2188,13 @@ <String>a1</String> </input> <pop> - <Integer>26</Integer> + <Unsigned>26</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>26</Integer> + <Unsigned>26</Unsigned> </push> </transition> <transition> @@ -2205,13 +2205,13 @@ <String>a1</String> </input> <pop> - <Integer>27</Integer> + <Unsigned>27</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>27</Integer> + <Unsigned>27</Unsigned> </push> </transition> <transition> @@ -2222,13 +2222,13 @@ <String>a1</String> </input> <pop> - <Integer>28</Integer> + <Unsigned>28</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>28</Integer> + <Unsigned>28</Unsigned> </push> </transition> <transition> @@ -2239,13 +2239,13 @@ <String>a1</String> </input> <pop> - <Integer>29</Integer> + <Unsigned>29</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>29</Integer> + <Unsigned>29</Unsigned> </push> </transition> <transition> @@ -2256,13 +2256,13 @@ <String>a1</String> </input> <pop> - <Integer>30</Integer> + <Unsigned>30</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>30</Integer> + <Unsigned>30</Unsigned> </push> </transition> <transition> @@ -2273,13 +2273,13 @@ <String>a1</String> </input> <pop> - <Integer>31</Integer> + <Unsigned>31</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>38</Integer> + <Unsigned>38</Unsigned> </push> </transition> <transition> @@ -2290,13 +2290,13 @@ <String>a1</String> </input> <pop> - <Integer>33</Integer> + <Unsigned>33</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>39</Integer> + <Unsigned>39</Unsigned> </push> </transition> <transition> @@ -2307,13 +2307,13 @@ <String>a1</String> </input> <pop> - <Integer>38</Integer> + <Unsigned>38</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>38</Integer> + <Unsigned>38</Unsigned> </push> </transition> <transition> @@ -2324,13 +2324,13 @@ <String>a1</String> </input> <pop> - <Integer>39</Integer> + <Unsigned>39</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>39</Integer> + <Unsigned>39</Unsigned> </push> </transition> <transition> @@ -2341,14 +2341,14 @@ <String>a2</String> </input> <pop> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>31</Integer> - <Integer>32</Integer> + <Unsigned>31</Unsigned> + <Unsigned>32</Unsigned> </push> </transition> <transition> @@ -2359,14 +2359,14 @@ <String>a2</String> </input> <pop> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>34</Integer> + <Unsigned>33</Unsigned> + <Unsigned>34</Unsigned> </push> </transition> <transition> @@ -2377,14 +2377,14 @@ <String>a2</String> </input> <pop> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>35</Integer> + <Unsigned>33</Unsigned> + <Unsigned>35</Unsigned> </push> </transition> <transition> @@ -2395,14 +2395,14 @@ <String>a2</String> </input> <pop> - <Integer>24</Integer> + <Unsigned>24</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>36</Integer> + <Unsigned>33</Unsigned> + <Unsigned>36</Unsigned> </push> </transition> <transition> @@ -2413,14 +2413,14 @@ <String>a2</String> </input> <pop> - <Integer>25</Integer> + <Unsigned>25</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>37</Integer> + <Unsigned>33</Unsigned> + <Unsigned>37</Unsigned> </push> </transition> <transition> @@ -2431,14 +2431,14 @@ <String>a2</String> </input> <pop> - <Integer>26</Integer> + <Unsigned>26</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>31</Integer> - <Integer>32</Integer> + <Unsigned>31</Unsigned> + <Unsigned>32</Unsigned> </push> </transition> <transition> @@ -2449,14 +2449,14 @@ <String>a2</String> </input> <pop> - <Integer>27</Integer> + <Unsigned>27</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>34</Integer> + <Unsigned>33</Unsigned> + <Unsigned>34</Unsigned> </push> </transition> <transition> @@ -2467,14 +2467,14 @@ <String>a2</String> </input> <pop> - <Integer>28</Integer> + <Unsigned>28</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>35</Integer> + <Unsigned>33</Unsigned> + <Unsigned>35</Unsigned> </push> </transition> <transition> @@ -2485,14 +2485,14 @@ <String>a2</String> </input> <pop> - <Integer>29</Integer> + <Unsigned>29</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>36</Integer> + <Unsigned>33</Unsigned> + <Unsigned>36</Unsigned> </push> </transition> <transition> @@ -2503,14 +2503,14 @@ <String>a2</String> </input> <pop> - <Integer>30</Integer> + <Unsigned>30</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>37</Integer> + <Unsigned>33</Unsigned> + <Unsigned>37</Unsigned> </push> </transition> <transition> @@ -2521,14 +2521,14 @@ <String>a2</String> </input> <pop> - <Integer>31</Integer> + <Unsigned>31</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>40</Integer> + <Unsigned>33</Unsigned> + <Unsigned>40</Unsigned> </push> </transition> <transition> @@ -2539,14 +2539,14 @@ <String>a2</String> </input> <pop> - <Integer>33</Integer> + <Unsigned>33</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>41</Integer> + <Unsigned>33</Unsigned> + <Unsigned>41</Unsigned> </push> </transition> <transition> @@ -2557,14 +2557,14 @@ <String>a2</String> </input> <pop> - <Integer>38</Integer> + <Unsigned>38</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>40</Integer> + <Unsigned>33</Unsigned> + <Unsigned>40</Unsigned> </push> </transition> <transition> @@ -2575,14 +2575,14 @@ <String>a2</String> </input> <pop> - <Integer>39</Integer> + <Unsigned>39</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>33</Integer> - <Integer>41</Integer> + <Unsigned>33</Unsigned> + <Unsigned>41</Unsigned> </push> </transition> <transition> @@ -2593,7 +2593,7 @@ <String>a0</String> </input> <pop> - <Integer>3</Integer> + <Unsigned>3</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -2608,7 +2608,7 @@ <String>a0</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -2623,7 +2623,7 @@ <String>a0</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -2638,13 +2638,13 @@ <String>a1</String> </input> <pop> - <Integer>3</Integer> + <Unsigned>3</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -2655,13 +2655,13 @@ <String>a1</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -2672,13 +2672,13 @@ <String>a1</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -2689,14 +2689,14 @@ <String>a2</String> </input> <pop> - <Integer>3</Integer> + <Unsigned>3</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -2707,14 +2707,14 @@ <String>a2</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -2725,14 +2725,14 @@ <String>a2</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -2743,7 +2743,7 @@ <String>a0</String> </input> <pop> - <Integer>6</Integer> + <Unsigned>6</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -2758,7 +2758,7 @@ <String>a0</String> </input> <pop> - <Integer>8</Integer> + <Unsigned>8</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -2773,7 +2773,7 @@ <String>a0</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -2788,7 +2788,7 @@ <String>a0</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -2803,7 +2803,7 @@ <String>a0</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -2818,7 +2818,7 @@ <String>a0</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -2833,7 +2833,7 @@ <String>a0</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -2848,7 +2848,7 @@ <String>a0</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -2863,7 +2863,7 @@ <String>a0</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -2878,7 +2878,7 @@ <String>a0</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -2893,7 +2893,7 @@ <String>a0</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -2908,7 +2908,7 @@ <String>a0</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -2923,13 +2923,13 @@ <String>a1</String> </input> <pop> - <Integer>6</Integer> + <Unsigned>6</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -2940,13 +2940,13 @@ <String>a1</String> </input> <pop> - <Integer>8</Integer> + <Unsigned>8</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -2957,13 +2957,13 @@ <String>a1</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -2974,13 +2974,13 @@ <String>a1</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -2991,13 +2991,13 @@ <String>a1</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3008,13 +3008,13 @@ <String>a1</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3025,13 +3025,13 @@ <String>a1</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -3042,13 +3042,13 @@ <String>a1</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3059,13 +3059,13 @@ <String>a1</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -3076,13 +3076,13 @@ <String>a1</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3093,13 +3093,13 @@ <String>a1</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -3110,13 +3110,13 @@ <String>a1</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3127,14 +3127,14 @@ <String>a2</String> </input> <pop> - <Integer>6</Integer> + <Unsigned>6</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3145,14 +3145,14 @@ <String>a2</String> </input> <pop> - <Integer>8</Integer> + <Unsigned>8</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3163,14 +3163,14 @@ <String>a2</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3181,14 +3181,14 @@ <String>a2</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3199,14 +3199,14 @@ <String>a2</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3217,14 +3217,14 @@ <String>a2</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3235,14 +3235,14 @@ <String>a2</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3253,14 +3253,14 @@ <String>a2</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3271,14 +3271,14 @@ <String>a2</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3289,14 +3289,14 @@ <String>a2</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3307,14 +3307,14 @@ <String>a2</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3325,14 +3325,14 @@ <String>a2</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3343,7 +3343,7 @@ <String>a0</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -3358,7 +3358,7 @@ <String>a0</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -3373,13 +3373,13 @@ <String>a1</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -3390,13 +3390,13 @@ <String>a1</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -3407,14 +3407,14 @@ <String>a2</String> </input> <pop> - <Integer>11</Integer> + <Unsigned>11</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -3425,14 +3425,14 @@ <String>a2</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -3443,7 +3443,7 @@ <String>a0</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -3458,7 +3458,7 @@ <String>a0</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -3473,7 +3473,7 @@ <String>a0</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -3488,7 +3488,7 @@ <String>a0</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -3503,7 +3503,7 @@ <String>a0</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -3518,7 +3518,7 @@ <String>a0</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -3533,7 +3533,7 @@ <String>a0</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -3548,7 +3548,7 @@ <String>a0</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -3563,7 +3563,7 @@ <String>a0</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -3578,7 +3578,7 @@ <String>a0</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -3593,13 +3593,13 @@ <String>a1</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -3610,13 +3610,13 @@ <String>a1</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -3627,13 +3627,13 @@ <String>a1</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3644,13 +3644,13 @@ <String>a1</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3661,13 +3661,13 @@ <String>a1</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -3678,13 +3678,13 @@ <String>a1</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3695,13 +3695,13 @@ <String>a1</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -3712,13 +3712,13 @@ <String>a1</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3729,13 +3729,13 @@ <String>a1</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -3746,13 +3746,13 @@ <String>a1</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -3763,14 +3763,14 @@ <String>a2</String> </input> <pop> - <Integer>14</Integer> + <Unsigned>14</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3781,14 +3781,14 @@ <String>a2</String> </input> <pop> - <Integer>17</Integer> + <Unsigned>17</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3799,14 +3799,14 @@ <String>a2</String> </input> <pop> - <Integer>18</Integer> + <Unsigned>18</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3817,14 +3817,14 @@ <String>a2</String> </input> <pop> - <Integer>20</Integer> + <Unsigned>20</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3835,14 +3835,14 @@ <String>a2</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3853,14 +3853,14 @@ <String>a2</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3871,14 +3871,14 @@ <String>a2</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3889,14 +3889,14 @@ <String>a2</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3907,14 +3907,14 @@ <String>a2</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -3925,14 +3925,14 @@ <String>a2</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -3943,7 +3943,7 @@ <String>a0</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>5</Unsigned> @@ -3958,13 +3958,13 @@ <String>a1</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>21</Integer> + <Unsigned>21</Unsigned> </push> </transition> <transition> @@ -3975,14 +3975,14 @@ <String>a2</String> </input> <pop> - <Integer>32</Integer> + <Unsigned>32</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>10</Integer> - <Integer>11</Integer> + <Unsigned>10</Unsigned> + <Unsigned>11</Unsigned> </push> </transition> <transition> @@ -3993,7 +3993,7 @@ <String>a0</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -4008,7 +4008,7 @@ <String>a0</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -4023,7 +4023,7 @@ <String>a0</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -4038,7 +4038,7 @@ <String>a0</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -4053,7 +4053,7 @@ <String>a0</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>7</Unsigned> @@ -4068,7 +4068,7 @@ <String>a0</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>8</Unsigned> @@ -4083,13 +4083,13 @@ <String>a1</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -4100,13 +4100,13 @@ <String>a1</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -4117,13 +4117,13 @@ <String>a1</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>22</Integer> + <Unsigned>22</Unsigned> </push> </transition> <transition> @@ -4134,13 +4134,13 @@ <String>a1</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>23</Integer> + <Unsigned>23</Unsigned> </push> </transition> <transition> @@ -4151,13 +4151,13 @@ <String>a1</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>24</Integer> + <Unsigned>24</Unsigned> </push> </transition> <transition> @@ -4168,13 +4168,13 @@ <String>a1</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>10</Unsigned> </to> <push> - <Integer>25</Integer> + <Unsigned>25</Unsigned> </push> </transition> <transition> @@ -4185,14 +4185,14 @@ <String>a2</String> </input> <pop> - <Integer>34</Integer> + <Unsigned>34</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -4203,14 +4203,14 @@ <String>a2</String> </input> <pop> - <Integer>35</Integer> + <Unsigned>35</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -4221,14 +4221,14 @@ <String>a2</String> </input> <pop> - <Integer>36</Integer> + <Unsigned>36</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -4239,14 +4239,14 @@ <String>a2</String> </input> <pop> - <Integer>37</Integer> + <Unsigned>37</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> <transition> @@ -4257,14 +4257,14 @@ <String>a2</String> </input> <pop> - <Integer>40</Integer> + <Unsigned>40</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>17</Integer> + <Unsigned>13</Unsigned> + <Unsigned>17</Unsigned> </push> </transition> <transition> @@ -4275,14 +4275,14 @@ <String>a2</String> </input> <pop> - <Integer>41</Integer> + <Unsigned>41</Unsigned> </pop> <to> <Unsigned>2</Unsigned> </to> <push> - <Integer>13</Integer> - <Integer>18</Integer> + <Unsigned>13</Unsigned> + <Unsigned>18</Unsigned> </push> </transition> </transitions>