Skip to content
Snippets Groups Projects
Commit 89d2d2ae authored by Jan Trávníček's avatar Jan Trávníček
Browse files

fix composing and parsing of various automata

parent 8b480e09
No related branches found
No related tags found
No related merge requests found
...@@ -588,7 +588,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, DPDA& ...@@ -588,7 +588,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, DPDA&
State from = parseTransitionFrom(input); State from = parseTransitionFrom(input);
std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input); std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input);
std::vector<alphabet::Symbol> pop = parseTransitionPop(input); std::vector<alphabet::Symbol> pop = parseTransitionPop(input);
State to = parseTransitionFrom(input); State to = parseTransitionTo(input);
std::vector<alphabet::Symbol> push = parseTransitionPush(input); std::vector<alphabet::Symbol> push = parseTransitionPush(input);
   
automaton.addTransition(from, inputSymbol, pop, to, push); automaton.addTransition(from, inputSymbol, pop, to, push);
...@@ -598,7 +598,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Singl ...@@ -598,7 +598,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Singl
State from = parseTransitionFrom(input); State from = parseTransitionFrom(input);
std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input); std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input);
alphabet::Symbol pop = parseTransitionSinglePop(input); alphabet::Symbol pop = parseTransitionSinglePop(input);
State to = parseTransitionFrom(input); State to = parseTransitionTo(input);
std::vector<alphabet::Symbol> push = parseTransitionPush(input); std::vector<alphabet::Symbol> push = parseTransitionPush(input);
   
automaton.addTransition(from, inputSymbol, pop, to, push); automaton.addTransition(from, inputSymbol, pop, to, push);
...@@ -646,7 +646,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, NPDA& ...@@ -646,7 +646,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, NPDA&
State from = parseTransitionFrom(input); State from = parseTransitionFrom(input);
std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input); std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input);
std::vector<alphabet::Symbol> pop = parseTransitionPop(input); std::vector<alphabet::Symbol> pop = parseTransitionPop(input);
State to = parseTransitionFrom(input); State to = parseTransitionTo(input);
std::vector<alphabet::Symbol> push = parseTransitionPush(input); std::vector<alphabet::Symbol> push = parseTransitionPush(input);
   
automaton.addTransition(from, inputSymbol, pop, to, push); automaton.addTransition(from, inputSymbol, pop, to, push);
...@@ -656,7 +656,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Singl ...@@ -656,7 +656,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Singl
State from = parseTransitionFrom(input); State from = parseTransitionFrom(input);
std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input); std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input);
alphabet::Symbol pop = parseTransitionSinglePop(input); alphabet::Symbol pop = parseTransitionSinglePop(input);
State to = parseTransitionFrom(input); State to = parseTransitionTo(input);
std::vector<alphabet::Symbol> push = parseTransitionPush(input); std::vector<alphabet::Symbol> push = parseTransitionPush(input);
   
automaton.addTransition(from, inputSymbol, pop, to, push); automaton.addTransition(from, inputSymbol, pop, to, push);
...@@ -665,7 +665,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Singl ...@@ -665,7 +665,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Singl
void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, OneTapeDTM& automaton) const { void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, OneTapeDTM& automaton) const {
State from = parseTransitionFrom(input); State from = parseTransitionFrom(input);
alphabet::Symbol inputSymbol = parseTransitionInputSymbol(input); alphabet::Symbol inputSymbol = parseTransitionInputSymbol(input);
State to = parseTransitionFrom(input); State to = parseTransitionTo(input);
alphabet::Symbol outputSymbol = parseTransitionOutputSymbol(input); alphabet::Symbol outputSymbol = parseTransitionOutputSymbol(input);
Shift shift = parseTransitionShift(input); Shift shift = parseTransitionShift(input);
   
...@@ -681,7 +681,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Unkno ...@@ -681,7 +681,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Unkno
} else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "input")) { } else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "input")) {
transition.setInput(parseTransitionInputEpsilonSymbol(input)); transition.setInput(parseTransitionInputEpsilonSymbol(input));
} else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "to")) { } else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "to")) {
transition.setTo(parseTransitionFrom(input)); transition.setTo(parseTransitionTo(input));
} else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "pop")) { } else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "pop")) {
transition.setPop(parseTransitionPop(input)); transition.setPop(parseTransitionPop(input));
} else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "push")) { } else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "push")) {
......
...@@ -612,8 +612,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const DPDA& automaton) con ...@@ -612,8 +612,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const DPDA& automaton) con
composeInputAlphabet(out, automaton.getInputAlphabet()); composeInputAlphabet(out, automaton.getInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet()); composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialState(out, automaton.getInitialState()); composeInitialState(out, automaton.getInitialState());
composeFinalStates(out, automaton.getFinalStates());
composeInitialStackSymbol(out, automaton.getInitialSymbol()); composeInitialStackSymbol(out, automaton.getInitialSymbol());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton); composeTransitions(out, automaton);
   
out.push_back(sax::Token("DPDA", sax::Token::TokenType::END_ELEMENT)); out.push_back(sax::Token("DPDA", sax::Token::TokenType::END_ELEMENT));
...@@ -628,8 +628,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopDPDA& autom ...@@ -628,8 +628,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopDPDA& autom
composeInputAlphabet(out, automaton.getInputAlphabet()); composeInputAlphabet(out, automaton.getInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet()); composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialState(out, automaton.getInitialState()); composeInitialState(out, automaton.getInitialState());
composeFinalStates(out, automaton.getFinalStates());
composeInitialStackSymbol(out, automaton.getInitialSymbol()); composeInitialStackSymbol(out, automaton.getInitialSymbol());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton); composeTransitions(out, automaton);
   
out.push_back(sax::Token("SinglePopDPDA", sax::Token::TokenType::END_ELEMENT)); out.push_back(sax::Token("SinglePopDPDA", sax::Token::TokenType::END_ELEMENT));
...@@ -663,8 +663,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const VisiblyPushdownNPDA& ...@@ -663,8 +663,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const VisiblyPushdownNPDA&
composeLocalInputAlphabet(out, automaton.getLocalInputAlphabet()); composeLocalInputAlphabet(out, automaton.getLocalInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet()); composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialStates(out, automaton.getInitialStates()); composeInitialStates(out, automaton.getInitialStates());
composeFinalStates(out, automaton.getFinalStates());
composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol()); composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton); composeTransitions(out, automaton);
   
out.push_back(sax::Token("VisiblyPushdownNPDA", sax::Token::TokenType::END_ELEMENT)); out.push_back(sax::Token("VisiblyPushdownNPDA", sax::Token::TokenType::END_ELEMENT));
...@@ -679,8 +679,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const NPDA& automaton) con ...@@ -679,8 +679,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const NPDA& automaton) con
composeInputAlphabet(out, automaton.getInputAlphabet()); composeInputAlphabet(out, automaton.getInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet()); composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialStates(out, automaton.getInitialStates()); composeInitialStates(out, automaton.getInitialStates());
composeFinalStates(out, automaton.getFinalStates());
composeInitialStackSymbols(out, automaton.getInitialSymbols()); composeInitialStackSymbols(out, automaton.getInitialSymbols());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton); composeTransitions(out, automaton);
   
out.push_back(sax::Token("NPDA", sax::Token::TokenType::END_ELEMENT)); out.push_back(sax::Token("NPDA", sax::Token::TokenType::END_ELEMENT));
...@@ -695,8 +695,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopNPDA& autom ...@@ -695,8 +695,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopNPDA& autom
composeInputAlphabet(out, automaton.getInputAlphabet()); composeInputAlphabet(out, automaton.getInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet()); composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialStates(out, automaton.getInitialStates()); composeInitialStates(out, automaton.getInitialStates());
composeFinalStates(out, automaton.getFinalStates());
composeInitialStackSymbols(out, automaton.getInitialSymbols()); composeInitialStackSymbols(out, automaton.getInitialSymbols());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton); composeTransitions(out, automaton);
   
out.push_back(sax::Token("SinglePopNPDA", sax::Token::TokenType::END_ELEMENT)); out.push_back(sax::Token("SinglePopNPDA", sax::Token::TokenType::END_ELEMENT));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment