diff --git a/transition_machine/src/Config.cpp b/transition_machine/src/Config.cpp index 7345d0e3a116838aaa591f0c526f41ea5acbd25e..514ea28d091a741fcd6225f575218a6d23e1a03d 100644 --- a/transition_machine/src/Config.cpp +++ b/transition_machine/src/Config.cpp @@ -708,7 +708,11 @@ bool Config::rawInputOnlySeparatorsLeft() const if (rawInputHeadIndex >= (int)rawInput.size()) return true; - return rawInput.size() - rawInputHeadIndex <= 2 && util::isSeparator(rawInput[rawInputHeadIndex+1]); + for (int i = rawInputHeadIndex; i < (int)rawInput.size(); i++) + if (!util::isSeparator(rawInput[i])) + return false; + + return true; } bool Config::endOfTapes() const diff --git a/transition_machine/src/Oracle.cpp b/transition_machine/src/Oracle.cpp index 014143f8f84faa812e562c0197697c7ac68b8136..ec954b2e7c625e33ffcfeb7da81de86e50ca2370 100644 --- a/transition_machine/src/Oracle.cpp +++ b/transition_machine/src/Oracle.cpp @@ -925,7 +925,7 @@ void Oracle::createDatabase() newState = "tokenizer"; movement = lastIndexDone[newState]-c.getHead()+1; - if (c.rawInputHeadIndex >= (int)c.rawInput.size() || done[newState] >= todo[newState]) + if (c.rawInputHeadIndex >= (int)c.rawInput.size() || c.rawInputOnlySeparatorsLeft() || done[newState] >= todo[newState]) { newState = "tagger"; movement = lastIndexDone[newState]-c.getHead()+1;