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&
State from = parseTransitionFrom(input);
std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input);
std::vector<alphabet::Symbol> pop = parseTransitionPop(input);
State to = parseTransitionFrom(input);
State to = parseTransitionTo(input);
std::vector<alphabet::Symbol> push = parseTransitionPush(input);
 
automaton.addTransition(from, inputSymbol, pop, to, push);
......@@ -598,7 +598,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Singl
State from = parseTransitionFrom(input);
std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input);
alphabet::Symbol pop = parseTransitionSinglePop(input);
State to = parseTransitionFrom(input);
State to = parseTransitionTo(input);
std::vector<alphabet::Symbol> push = parseTransitionPush(input);
 
automaton.addTransition(from, inputSymbol, pop, to, push);
......@@ -646,7 +646,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, NPDA&
State from = parseTransitionFrom(input);
std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input);
std::vector<alphabet::Symbol> pop = parseTransitionPop(input);
State to = parseTransitionFrom(input);
State to = parseTransitionTo(input);
std::vector<alphabet::Symbol> push = parseTransitionPush(input);
 
automaton.addTransition(from, inputSymbol, pop, to, push);
......@@ -656,7 +656,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Singl
State from = parseTransitionFrom(input);
std::variant<string::Epsilon, alphabet::Symbol> inputSymbol = parseTransitionInputEpsilonSymbol(input);
alphabet::Symbol pop = parseTransitionSinglePop(input);
State to = parseTransitionFrom(input);
State to = parseTransitionTo(input);
std::vector<alphabet::Symbol> push = parseTransitionPush(input);
 
automaton.addTransition(from, inputSymbol, pop, to, push);
......@@ -665,7 +665,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Singl
void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, OneTapeDTM& automaton) const {
State from = parseTransitionFrom(input);
alphabet::Symbol inputSymbol = parseTransitionInputSymbol(input);
State to = parseTransitionFrom(input);
State to = parseTransitionTo(input);
alphabet::Symbol outputSymbol = parseTransitionOutputSymbol(input);
Shift shift = parseTransitionShift(input);
 
......@@ -681,7 +681,7 @@ void AutomatonFromXMLParser::parseTransition(std::list<sax::Token>& input, Unkno
} else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "input")) {
transition.setInput(parseTransitionInputEpsilonSymbol(input));
} 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")) {
transition.setPop(parseTransitionPop(input));
} else if (isToken(input, sax::Token::TokenType::START_ELEMENT, "push")) {
......
......@@ -612,8 +612,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const DPDA& automaton) con
composeInputAlphabet(out, automaton.getInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialState(out, automaton.getInitialState());
composeFinalStates(out, automaton.getFinalStates());
composeInitialStackSymbol(out, automaton.getInitialSymbol());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton);
 
out.push_back(sax::Token("DPDA", sax::Token::TokenType::END_ELEMENT));
......@@ -628,8 +628,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopDPDA& autom
composeInputAlphabet(out, automaton.getInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialState(out, automaton.getInitialState());
composeFinalStates(out, automaton.getFinalStates());
composeInitialStackSymbol(out, automaton.getInitialSymbol());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton);
 
out.push_back(sax::Token("SinglePopDPDA", sax::Token::TokenType::END_ELEMENT));
......@@ -663,8 +663,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const VisiblyPushdownNPDA&
composeLocalInputAlphabet(out, automaton.getLocalInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialStates(out, automaton.getInitialStates());
composeFinalStates(out, automaton.getFinalStates());
composeBottomOfTheStackSymbol(out, automaton.getBottomOfTheStackSymbol());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton);
 
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
composeInputAlphabet(out, automaton.getInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialStates(out, automaton.getInitialStates());
composeFinalStates(out, automaton.getFinalStates());
composeInitialStackSymbols(out, automaton.getInitialSymbols());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton);
 
out.push_back(sax::Token("NPDA", sax::Token::TokenType::END_ELEMENT));
......@@ -695,8 +695,8 @@ std::list<sax::Token> AutomatonToXMLComposer::compose(const SinglePopNPDA& autom
composeInputAlphabet(out, automaton.getInputAlphabet());
composeStackAlphabet(out, automaton.getStackAlphabet());
composeInitialStates(out, automaton.getInitialStates());
composeFinalStates(out, automaton.getFinalStates());
composeInitialStackSymbols(out, automaton.getInitialSymbols());
composeFinalStates(out, automaton.getFinalStates());
composeTransitions(out, automaton);
 
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