From 757de8911f7ad12cfe2f72631aebdc323ab4fdd9 Mon Sep 17 00:00:00 2001
From: Franck Dary <franck.dary@lis-lab.fr>
Date: Fri, 10 Apr 2020 22:25:41 +0200
Subject: [PATCH] Working tokeparser_seq

---
 reading_machine/src/Strategy.cpp | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/reading_machine/src/Strategy.cpp b/reading_machine/src/Strategy.cpp
index 769420b..b540975 100644
--- a/reading_machine/src/Strategy.cpp
+++ b/reading_machine/src/Strategy.cpp
@@ -39,6 +39,8 @@ Strategy::Strategy(const std::vector<std::string_view> & lines)
 
   if (edges.empty())
     util::myThrow("Strategy is empty");
+  if (type == Type::Sequential)
+    defaultCycle.pop_back();
   std::reverse(defaultCycle.begin(), defaultCycle.end());
   originalDefaultCycle = defaultCycle;
 }
@@ -50,18 +52,21 @@ std::pair<std::string, int> Strategy::getMovement(const Config & c, const std::s
   if (c.stateIsDone())
     isDone[c.getState()] = true;
 
-  for (unsigned int i = 0; i < defaultCycle.size(); i++)
+  if (type == Type::Sequential)
   {
+    while (defaultCycle.size() && isDone[defaultCycle.back()])
+      defaultCycle.pop_back();
+
+    return getMovementSequential(c, transitionPrefix);
+  }
+
+  for (unsigned int i = 0; i < defaultCycle.size(); i++)
     if (isDone[defaultCycle[i]])
     {
       while (defaultCycle.size() != i)
         defaultCycle.pop_back();
       break;
     }
-  }
-
-  if (type == Type::Sequential)
-    return getMovementSequential(c, transitionPrefix);
 
   return getMovementIncremental(c, transitionPrefix);
 }
-- 
GitLab