diff --git a/alib2data/src/automaton/AutomatonFromXMLParser.cpp b/alib2data/src/automaton/AutomatonFromXMLParser.cpp index 7b0395f61dfa486150ecb679a8293b5fa73bfabb..55c70aeef44d91d1aee1b81ac8a7a1017fc79621 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 1b23ccc3ac4c69e033c265fba8152c3e9c193480..017a8ec9c0f6dd8d54fd86df1d7984d541f28a44 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 0f4d2d6039a8f8d4fab33f48c4e9701286224a56..0000000000000000000000000000000000000000 --- 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 93b78bb20f2343fa69b7f18627e6e1944d03158e..0000000000000000000000000000000000000000 --- 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 f30bc320b410a14fff2310506a847c137e5d1e67..0000000000000000000000000000000000000000 --- 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 6ea26b6e4021e95856e9b0f24cc9075fe3a56504..0000000000000000000000000000000000000000 --- 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 9e7607c9699705787596beebd96c27e16a589631..0000000000000000000000000000000000000000 --- 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 6506702c96d436b085b10495b9882df1e08e92a4..0000000000000000000000000000000000000000 --- 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 0000000000000000000000000000000000000000..ded0536a9862ed421112b7bba32acdd966932b6e --- /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 0000000000000000000000000000000000000000..0e48fb790f056c89388d139b3be865051133ad9e --- /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 0000000000000000000000000000000000000000..6dddce5eb69c4f0ee4a3715547e649b72623873c --- /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 0000000000000000000000000000000000000000..125013344ba76151825f8e013a352617f9bf56df --- /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 0000000000000000000000000000000000000000..90141af90a646f959e558e59689c1a23fa36c97e --- /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 0000000000000000000000000000000000000000..191ab7b657684949b98f1cf4d187f7b4093b55df --- /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>