From 6cd66b1a797e18016f6bdc3dde87805efc9a7b0e Mon Sep 17 00:00:00 2001
From: Franck Dary <franck.dary@lis-lab.fr>
Date: Mon, 2 Dec 2019 15:46:46 +0100
Subject: [PATCH] Improved Oracle tokeparser_sequential

---
 transition_machine/src/Config.cpp | 6 +++++-
 transition_machine/src/Oracle.cpp | 2 +-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/transition_machine/src/Config.cpp b/transition_machine/src/Config.cpp
index 7345d0e..514ea28 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 014143f..ec954b2 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;
-- 
GitLab