From 53a96b7608f81284270edc9550c19a968e71802a Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Tue, 13 Jan 2015 22:05:01 +0100
Subject: [PATCH] transform example turing machines to new xml representation

---
 .../src/automaton/AutomatonFromXMLParser.cpp  | 10 +-
 .../src/automaton/AutomatonToXMLComposer.cpp  |  3 +-
 examples/automaton/DFSM1IS.xml                | 66 -------------
 examples/automaton/FSM.xml                    | 60 -----------
 examples/automaton/FSM2.xml                   | 70 -------------
 examples/automaton/TM.xml                     | 53 ----------
 examples/automaton/TM2.xml                    | 99 -------------------
 examples/automaton/TM3.xml                    | 44 ---------
 examples2/automaton/DFSM1IS.xml               | 66 +++++++++++++
 examples2/automaton/FSM.xml                   | 60 +++++++++++
 examples2/automaton/FSM2.xml                  | 80 +++++++++++++++
 examples2/automaton/TM.xml                    | 53 ++++++++++
 examples2/automaton/TM2.xml                   | 99 +++++++++++++++++++
 examples2/automaton/TM3.xml                   | 44 +++++++++
 14 files changed, 408 insertions(+), 399 deletions(-)
 delete mode 100644 examples/automaton/DFSM1IS.xml
 delete mode 100644 examples/automaton/FSM.xml
 delete mode 100644 examples/automaton/FSM2.xml
 delete mode 100644 examples/automaton/TM.xml
 delete mode 100644 examples/automaton/TM2.xml
 delete mode 100644 examples/automaton/TM3.xml
 create mode 100644 examples2/automaton/DFSM1IS.xml
 create mode 100644 examples2/automaton/FSM.xml
 create mode 100644 examples2/automaton/FSM2.xml
 create mode 100644 examples2/automaton/TM.xml
 create mode 100644 examples2/automaton/TM2.xml
 create mode 100644 examples2/automaton/TM3.xml

diff --git a/alib2data/src/automaton/AutomatonFromXMLParser.cpp b/alib2data/src/automaton/AutomatonFromXMLParser.cpp
index 7b0395f61d..55c70aeef4 100644
--- a/alib2data/src/automaton/AutomatonFromXMLParser.cpp
+++ b/alib2data/src/automaton/AutomatonFromXMLParser.cpp
@@ -168,7 +168,7 @@ EpsilonNFA AutomatonFromXMLParser::parseEpsilonNFA(std::list<sax::Token>& input)
 
 CompactNFA AutomatonFromXMLParser::parseCompactNFA(std::list<sax::Token>& input) const {
 	popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_COMPACT_NFA);
-	
+
 	std::set<State> states = parseStates(input);
 	std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input);
 	State initialState = parseInitialState(input);
@@ -426,16 +426,16 @@ OneTapeDTM AutomatonFromXMLParser::parseOneTapeDTM(std::list<sax::Token>& input)
 	popToken(input, sax::Token::TokenType::START_ELEMENT, alib::Names::AUTOMATON_ONE_TAPE_DTM);
 
 	std::set<State> states = parseStates(input);
-	std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input);
 	std::set<alphabet::Symbol> tapeSymbols = parseTapeAlphabet(input);
+	std::set<alphabet::Symbol> inputSymbols = parseInputAlphabet(input);
 	alphabet::Symbol blank = parseBlankSymbol(input);
 	State initialState = parseInitialState(input);
 	std::set<State> finalStates = parseFinalStates(input);
 
 	OneTapeDTM automaton(initialState, blank);
 	automaton.setStates(states);
-	automaton.setInputAlphabet(inputSymbols);
 	automaton.setTapeAlphabet(tapeSymbols);
+	automaton.setInputAlphabet(inputSymbols);
 	automaton.setInitialState(initialState);
 	automaton.setFinalStates(finalStates);
 
@@ -927,7 +927,7 @@ alphabet::Symbol AutomatonFromXMLParser::parseTransitionOutputSymbol(std::list<s
 
 std::variant<string::Epsilon, alphabet::Symbol> AutomatonFromXMLParser::parseTransitionInputEpsilonSymbol(std::list<sax::Token>& input) const {
 	popToken(input, sax::Token::TokenType::START_ELEMENT, "input");
-	
+
 	if(isToken(input, sax::Token::TokenType::START_ELEMENT, "epsilon")) {
 		std::variant<string::Epsilon, alphabet::Symbol> result(string::Epsilon::EPSILON);
 		input.pop_front();
@@ -943,7 +943,7 @@ std::variant<string::Epsilon, alphabet::Symbol> AutomatonFromXMLParser::parseTra
 
 std::variant<string::Epsilon, alphabet::Symbol> AutomatonFromXMLParser::parseTransitionOutputEpsilonSymbol(std::list<sax::Token>& input) const {
 	popToken(input, sax::Token::TokenType::START_ELEMENT, "output");
-	
+
 	if(isToken(input, sax::Token::TokenType::START_ELEMENT, "epsilon")) {
 		std::variant<string::Epsilon, alphabet::Symbol> result(string::Epsilon::EPSILON);
 		input.pop_front();
diff --git a/alib2data/src/automaton/AutomatonToXMLComposer.cpp b/alib2data/src/automaton/AutomatonToXMLComposer.cpp
index 1b23ccc3ac..017a8ec9c0 100644
--- a/alib2data/src/automaton/AutomatonToXMLComposer.cpp
+++ b/alib2data/src/automaton/AutomatonToXMLComposer.cpp
@@ -117,7 +117,6 @@ void AutomatonToXMLComposer::composeBottomOfTheStackSymbol(std::list<sax::Token>
 }
 
 void AutomatonToXMLComposer::composeInputToPushdownStoreOperation(std::list<sax::Token>& out, const automaton::InputDrivenNPDA& automaton) const {
-	
 	out.push_back(sax::Token("inputToPushdownStoreOperations", sax::Token::TokenType::START_ELEMENT));
 	for(const auto& pushdownStoreOperation : automaton.getPushdownStoreOperations()) {
 		out.push_back(sax::Token("operation", sax::Token::TokenType::START_ELEMENT));
@@ -793,8 +792,8 @@ void AutomatonToXMLComposer::compose(std::list<sax::Token>& out, const OneTapeDT
 	out.push_back(sax::Token(alib::Names::AUTOMATON_ONE_TAPE_DTM, sax::Token::TokenType::START_ELEMENT));
 
 	composeStates(out, automaton.getStates());
-	composeInputAlphabet(out, automaton.getInputAlphabet());
 	composeTapeAlphabet(out, automaton.getTapeAlphabet());
+	composeInputAlphabet(out, automaton.getInputAlphabet());
 	composeBlankSymbol(out, automaton.getBlankSymbol());
 	composeInitialState(out, automaton.getInitialState());
 	composeFinalStates(out, automaton.getFinalStates());
diff --git a/examples/automaton/DFSM1IS.xml b/examples/automaton/DFSM1IS.xml
deleted file mode 100644
index 0f4d2d6039..0000000000
--- a/examples/automaton/DFSM1IS.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<automaton>
-	<states>
-		<state>['A', 'C', 'S']</state>
-		<state>['A', 'S']</state>
-		<state>['B', 'S']</state>
-		<state>['S']</state>
-		<state>['X']</state>
-	</states>
-	<inputAlphabet>
-		<symbol>0</symbol>
-		<symbol>1</symbol>
-	</inputAlphabet>
-	<transitions>
-		<transition>
-			<from>['A', 'C', 'S']</from>
-			<input>0</input>
-			<to>['A', 'S']</to>
-		</transition>
-		<transition>
-			<from>['A', 'C', 'S']</from>
-			<input>1</input>
-			<to>['B', 'S']</to>
-		</transition>
-		<transition>
-			<from>['A', 'S']</from>
-			<input>0</input>
-			<to>['A', 'S']</to>
-		</transition>
-		<transition>
-			<from>['A', 'S']</from>
-			<input>1</input>
-			<to>['B', 'S']</to>
-		</transition>
-		<transition>
-			<from>['B', 'S']</from>
-			<input>0</input>
-			<to>['A', 'C', 'S']</to>
-		</transition>
-		<transition>
-			<from>['B', 'S']</from>
-			<input>1</input>
-			<to>['S']</to>
-		</transition>
-		<transition>
-			<from>['S']</from>
-			<input>0</input>
-			<to>['A', 'S']</to>
-		</transition>
-		<transition>
-			<from>['S']</from>
-			<input>1</input>
-			<to>['S']</to>
-		</transition>
-		<transition>
-			<from>['X']</from>
-			<input>1</input>
-			<to>['X']</to>
-		</transition>
-	</transitions>
-	<initialStates>
-		<state>['S']</state>
-	</initialStates>
-	<finalStates>
-		<state>['A', 'C', 'S']</state>
-	</finalStates>
-</automaton>
diff --git a/examples/automaton/FSM.xml b/examples/automaton/FSM.xml
deleted file mode 100644
index 93b78bb20f..0000000000
--- a/examples/automaton/FSM.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<automaton>
-	<states>
-		<state>one</state>
-		<state>two</state>
-		<state>three</state>
-		<state>four</state>
-	</states>
-	<inputAlphabet>
-		<symbol>0</symbol>
-		<symbol>1</symbol>
-	</inputAlphabet>
-	<transitions>
-		<transition>
-			<from>four</from>
-			<input>1</input>
-			<to>four</to>
-		</transition>
-		<transition>
-			<from>four</from>
-			<input>0</input>
-			<to>one</to>
-		</transition>
-		<transition>
-			<from>one</from>
-			<input>0</input>
-			<to>two</to>
-		</transition>
-		<transition>
-			<from>one</from>
-			<input>1</input>
-			<to>one</to>
-		</transition>
-		<transition>
-			<from>three</from>
-			<input>0</input>
-			<to>four</to>
-		</transition>
-		<transition>
-			<from>three</from>
-			<input>1</input>
-			<to>three</to>
-		</transition>
-		<transition>
-			<from>two</from>
-			<input>0</input>
-			<to>three</to>
-		</transition>
-		<transition>
-			<from>two</from>
-			<input>1</input>
-			<to>two</to>
-		</transition>
-	</transitions>
-	<initialStates>
-		<state>one</state>
-	</initialStates>
-	<finalStates>
-		<state>one</state>
-	</finalStates>
-</automaton>
diff --git a/examples/automaton/FSM2.xml b/examples/automaton/FSM2.xml
deleted file mode 100644
index f30bc320b4..0000000000
--- a/examples/automaton/FSM2.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<automaton>
-	<states>
-		<state>one</state>
-		<state>two</state>
-		<state>three</state>
-		<state>four</state>
-		<state>five</state>
-		<state>six</state>
-	</states>
-	<inputAlphabet>
-		<symbol>0</symbol>
-		<symbol>1</symbol>
-	</inputAlphabet>
-	<transitions>
-		<transition>
-			<from>four</from>
-			<input>1</input>
-			<to>four</to>
-		</transition>
-		<transition>
-			<from>four</from>
-			<input>0</input>
-			<to>one</to>
-		</transition>
-		<transition>
-			<from>one</from>
-			<input>0</input>
-			<to>two</to>
-		</transition>
-		<transition>
-			<from>one</from>
-			<input>1</input>
-			<to>one</to>
-		</transition>
-		<transition>
-			<from>three</from>
-			<input>0</input>
-			<to>four</to>
-		</transition>
-		<transition>
-			<from>three</from>
-			<input>1</input>
-			<to>three</to>
-		</transition>
-		<transition>
-			<from>two</from>
-			<input>0</input>
-			<to>three</to>
-		</transition>
-		<transition>
-			<from>two</from>
-			<input>1</input>
-			<to>two</to>
-		</transition>
-
-		<transition>
-			<from>five</from>
-			<input></input>
-			<to>six</to>
-		</transition>
-	</transitions>
-	<initialStates>
-		<state>one</state>
-		<state>five</state>
-	</initialStates>
-	<finalStates>
-		<state>one</state>
-		<state>six</state>
-	</finalStates>
-</automaton>
diff --git a/examples/automaton/TM.xml b/examples/automaton/TM.xml
deleted file mode 100644
index 6ea26b6e40..0000000000
--- a/examples/automaton/TM.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<automaton>
-	<states>
-		<state>a1</state>
-		<state>a2</state>
-		<state>a3</state>
-		<state>a4</state>
-	</states>
-	<tapeAlphabet>
-		<symbol>0</symbol>
-		<symbol>1</symbol>
-		<symbol>B</symbol>
-	</tapeAlphabet>
-	<inputAlphabet>
-		<symbol>0</symbol>
-		<symbol>1</symbol>
-	</inputAlphabet>
-	<transitions>
-		<transition>
-			<from>a1</from>
-			<input>B</input>
-			<to>a2</to>
-			<output>0</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>a2</from>
-			<input>B</input>
-			<to>a3</to>
-			<output>B</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>a3</from>
-			<input>B</input>
-			<to>a4</to>
-			<output>1</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>a4</from>
-			<input>B</input>
-			<to>a1</to>
-			<output>B</output>
-			<shift>right</shift>
-		</transition>
-	</transitions>
-	<initialStates>
-		<state>a1</state>
-	</initialStates>
-	<blankSymbol>B</blankSymbol>
-	<finalStates>
-	</finalStates>
-</automaton>
diff --git a/examples/automaton/TM2.xml b/examples/automaton/TM2.xml
deleted file mode 100644
index 9e7607c969..0000000000
--- a/examples/automaton/TM2.xml
+++ /dev/null
@@ -1,99 +0,0 @@
-<automaton>
-	<states>
-		<state>q0</state>
-		<state>q1</state>
-		<state>q2</state>
-		<state>q3</state>
-		<state>q4</state>
-	</states>
-	<tapeAlphabet>
-		<symbol>0</symbol>
-		<symbol>1</symbol>
-		<symbol>X</symbol>
-		<symbol>Y</symbol>
-		<symbol>B</symbol>
-	</tapeAlphabet>
-	<inputAlphabet>
-		<symbol>0</symbol>
-		<symbol>1</symbol>
-	</inputAlphabet>
-	<transitions>
-		<transition>
-			<from>q0</from>
-			<input>0</input>
-			<to>q1</to>
-			<output>X</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>q1</from>
-			<input>0</input>
-			<to>q1</to>
-			<output>0</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>q1</from>
-			<input>Y</input>
-			<to>q1</to>
-			<output>Y</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>q1</from>
-			<input>1</input>
-			<to>q2</to>
-			<output>Y</output>
-			<shift>left</shift>
-		</transition>
-		<transition>
-			<from>q2</from>
-			<input>Y</input>
-			<to>q2</to>
-			<output>Y</output>
-			<shift>left</shift>
-		</transition>
-		<transition>
-			<from>q2</from>
-			<input>0</input>
-			<to>q2</to>
-			<output>0</output>
-			<shift>left</shift>
-		</transition>
-		<transition>
-			<from>q2</from>
-			<input>X</input>
-			<to>q0</to>
-			<output>X</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>q0</from>
-			<input>Y</input>
-			<to>q3</to>
-			<output>Y</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>q3</from>
-			<input>Y</input>
-			<to>q3</to>
-			<output>Y</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>q3</from>
-			<input>B</input>
-			<to>q4</to>
-			<output>B</output>
-			<shift>right</shift>
-		</transition>
-	</transitions>
-	<initialStates>
-		<state>q0</state>
-	</initialStates>
-	<blankSymbol>B</blankSymbol>
-	<finalStates>
-		<state>q4</state>
-	</finalStates>
-</automaton>
diff --git a/examples/automaton/TM3.xml b/examples/automaton/TM3.xml
deleted file mode 100644
index 6506702c96..0000000000
--- a/examples/automaton/TM3.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<automaton>
-	<states>
-		<state>a1</state>
-		<state>a2</state>
-	</states>
-	<tapeAlphabet>
-		<symbol>0</symbol>
-		<symbol>1</symbol>
-		<symbol>B</symbol>
-	</tapeAlphabet>
-	<inputAlphabet>
-		<symbol>0</symbol>
-		<symbol>1</symbol>
-	</inputAlphabet>
-	<transitions>
-		<transition>
-			<from>a1</from>
-			<input>0</input>
-			<to>a2</to>
-			<output>0</output>
-			<shift>right</shift>
-		</transition>
-		<transition>
-			<from>a2</from>
-			<input>1</input>
-			<to>a1</to>
-			<output>1</output>
-			<shift>left</shift>
-		</transition>
-		<transition>
-			<from>a2</from>
-			<input>B</input>
-			<to>a2</to>
-			<output>1</output>
-			<shift>none</shift>
-		</transition>
-	</transitions>
-	<initialStates>
-		<state>a1</state>
-	</initialStates>
-	<blankSymbol>B</blankSymbol>
-	<finalStates>
-	</finalStates>
-</automaton>
diff --git a/examples2/automaton/DFSM1IS.xml b/examples2/automaton/DFSM1IS.xml
new file mode 100644
index 0000000000..ded0536a98
--- /dev/null
+++ b/examples2/automaton/DFSM1IS.xml
@@ -0,0 +1,66 @@
+<DFA>
+	<states>
+		<PrimitiveLabel><String>['A', 'C', 'S']</String></PrimitiveLabel>
+		<PrimitiveLabel><String>['A', 'S']</String></PrimitiveLabel>
+		<PrimitiveLabel><String>['B', 'S']</String></PrimitiveLabel>
+		<PrimitiveLabel><String>['S']</String></PrimitiveLabel>
+		<PrimitiveLabel><String>['X']</String></PrimitiveLabel>
+	</states>
+	<inputAlphabet>
+		<LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol>
+	</inputAlphabet>
+	<initialStates>
+		<PrimitiveLabel><String>['S']</String></PrimitiveLabel>
+	</initialStates>
+	<finalStates>
+		<PrimitiveLabel><String>['A', 'C', 'S']</String></PrimitiveLabel>
+	</finalStates>
+	<transitions>
+		<transition>
+			<from><PrimitiveLabel><String>['A', 'C', 'S']</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>['A', 'S']</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>['A', 'C', 'S']</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>['B', 'S']</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>['A', 'S']</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>['A', 'S']</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>['A', 'S']</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>['B', 'S']</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>['B', 'S']</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>['A', 'C', 'S']</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>['B', 'S']</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>['S']</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>['S']</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>['A', 'S']</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>['S']</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>['S']</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>['X']</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>['X']</String></PrimitiveLabel></to>
+		</transition>
+	</transitions>
+</DFA>
diff --git a/examples2/automaton/FSM.xml b/examples2/automaton/FSM.xml
new file mode 100644
index 0000000000..0e48fb790f
--- /dev/null
+++ b/examples2/automaton/FSM.xml
@@ -0,0 +1,60 @@
+<DFA>
+	<states>
+		<PrimitiveLabel><String>one</String></PrimitiveLabel>
+		<PrimitiveLabel><String>two</String></PrimitiveLabel>
+		<PrimitiveLabel><String>three</String></PrimitiveLabel>
+		<PrimitiveLabel><String>four</String></PrimitiveLabel>
+	</states>
+	<inputAlphabet>
+		<LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol>
+	</inputAlphabet>
+	<transitions>
+		<transition>
+			<from><PrimitiveLabel><String>four</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>four</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>four</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>one</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>one</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>two</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>one</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>one</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>three</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>four</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>three</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>three</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>two</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>three</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>two</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>two</String></PrimitiveLabel></to>
+		</transition>
+	</transitions>
+	<initialStates>
+		<PrimitiveLabel><String>one</String></PrimitiveLabel>
+	</initialStates>
+	<finalStates>
+		<PrimitiveLabel><String>one</String></PrimitiveLabel>
+	</finalStates>
+</DFA>
diff --git a/examples2/automaton/FSM2.xml b/examples2/automaton/FSM2.xml
new file mode 100644
index 0000000000..6dddce5eb6
--- /dev/null
+++ b/examples2/automaton/FSM2.xml
@@ -0,0 +1,80 @@
+<EpsilonNFA>
+	<states>
+		<PrimitiveLabel><String>one</String></PrimitiveLabel>
+		<PrimitiveLabel><String>two</String></PrimitiveLabel>
+		<PrimitiveLabel><String>three</String></PrimitiveLabel>
+		<PrimitiveLabel><String>four</String></PrimitiveLabel>
+		<PrimitiveLabel><String>five</String></PrimitiveLabel>
+		<PrimitiveLabel><String>six</String></PrimitiveLabel>
+		<PrimitiveLabel><String>zero</String></PrimitiveLabel>
+	</states>
+	<inputAlphabet>
+		<LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol>
+	</inputAlphabet>
+	<initialState>
+		<PrimitiveLabel><String>zero</String></PrimitiveLabel>
+	</initialState>
+	<finalStates>
+		<PrimitiveLabel><String>one</String></PrimitiveLabel>
+		<PrimitiveLabel><String>six</String></PrimitiveLabel>
+	</finalStates>
+	<transitions>
+		<transition>
+			<from><PrimitiveLabel><String>four</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>four</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>four</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>one</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>one</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>two</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>one</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>one</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>three</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>four</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>three</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>three</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>two</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>three</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>two</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>two</String></PrimitiveLabel></to>
+		</transition>
+
+		<transition>
+			<from><PrimitiveLabel><String>five</String></PrimitiveLabel></from>
+			<input><epsilon/></input>
+			<to><PrimitiveLabel><String>six</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>zero</String></PrimitiveLabel></from>
+			<input><epsilon/></input>
+			<to><PrimitiveLabel><String>five</String></PrimitiveLabel></to>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>zero</String></PrimitiveLabel></from>
+			<input><epsilon/></input>
+			<to><PrimitiveLabel><String>one</String></PrimitiveLabel></to>
+		</transition>
+	</transitions>
+</EpsilonNFA>
diff --git a/examples2/automaton/TM.xml b/examples2/automaton/TM.xml
new file mode 100644
index 0000000000..125013344b
--- /dev/null
+++ b/examples2/automaton/TM.xml
@@ -0,0 +1,53 @@
+<OneTapeDTM>
+	<states>
+		<PrimitiveLabel><String>a1</String></PrimitiveLabel>
+		<PrimitiveLabel><String>a2</String></PrimitiveLabel>
+		<PrimitiveLabel><String>a3</String></PrimitiveLabel>
+		<PrimitiveLabel><String>a4</String></PrimitiveLabel>
+	</states>
+	<tapeAlphabet>
+		<LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol>
+	</tapeAlphabet>
+	<inputAlphabet>
+		<LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol>
+	</inputAlphabet>
+	<blankSymbol><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></blankSymbol>
+	<initialState>
+		<PrimitiveLabel><String>a1</String></PrimitiveLabel>
+	</initialState>
+	<finalStates>
+	</finalStates>
+	<transitions>
+		<transition>
+			<from><PrimitiveLabel><String>a1</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>a2</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>a2</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>a3</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>a3</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>a4</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>a4</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>a1</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+	</transitions>
+</OneTapeDTM>
diff --git a/examples2/automaton/TM2.xml b/examples2/automaton/TM2.xml
new file mode 100644
index 0000000000..90141af90a
--- /dev/null
+++ b/examples2/automaton/TM2.xml
@@ -0,0 +1,99 @@
+<OneTapeDTM>
+	<states>
+		<PrimitiveLabel><String>q0</String></PrimitiveLabel>
+		<PrimitiveLabel><String>q1</String></PrimitiveLabel>
+		<PrimitiveLabel><String>q2</String></PrimitiveLabel>
+		<PrimitiveLabel><String>q3</String></PrimitiveLabel>
+		<PrimitiveLabel><String>q4</String></PrimitiveLabel>
+	</states>
+	<tapeAlphabet>
+		<LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>X</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol>
+	</tapeAlphabet>
+	<inputAlphabet>
+		<LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol>
+	</inputAlphabet>
+	<blankSymbol><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></blankSymbol>
+	<initialState>
+		<PrimitiveLabel><String>q0</String></PrimitiveLabel>
+	</initialState>
+	<finalStates>
+		<PrimitiveLabel><String>q4</String></PrimitiveLabel>
+	</finalStates>
+	<transitions>
+		<transition>
+			<from><PrimitiveLabel><String>q0</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q1</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>X</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>q1</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q1</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>q1</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q1</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>q1</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q2</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>left</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>q2</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q2</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>left</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>q2</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q2</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>left</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>q2</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>X</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q0</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>X</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>q0</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q3</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>q3</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q3</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>Y</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>q3</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>q4</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+	</transitions>
+</OneTapeDTM>
diff --git a/examples2/automaton/TM3.xml b/examples2/automaton/TM3.xml
new file mode 100644
index 0000000000..191ab7b657
--- /dev/null
+++ b/examples2/automaton/TM3.xml
@@ -0,0 +1,44 @@
+<OneTapeDTM>
+	<states>
+		<PrimitiveLabel><String>a1</String></PrimitiveLabel>
+		<PrimitiveLabel><String>a2</String></PrimitiveLabel>
+	</states>
+	<tapeAlphabet>
+		<LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol>
+	</tapeAlphabet>
+	<inputAlphabet>
+		<LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol>
+		<LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol>
+	</inputAlphabet>
+	<blankSymbol><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></blankSymbol>
+	<initialState>
+		<PrimitiveLabel><String>a1</String></PrimitiveLabel>
+	</initialState>
+	<finalStates>
+	</finalStates>
+	<transitions>
+		<transition>
+			<from><PrimitiveLabel><String>a1</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>a2</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>0</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>right</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>a2</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>a1</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>left</shift>
+		</transition>
+		<transition>
+			<from><PrimitiveLabel><String>a2</String></PrimitiveLabel></from>
+			<input><LabeledSymbol><PrimitiveLabel><Character>B</Character></PrimitiveLabel></LabeledSymbol></input>
+			<to><PrimitiveLabel><String>a2</String></PrimitiveLabel></to>
+			<output><LabeledSymbol><PrimitiveLabel><Character>1</Character></PrimitiveLabel></LabeledSymbol></output>
+			<shift>none</shift>
+		</transition>
+	</transitions>
+</OneTapeDTM>
-- 
GitLab