From fc7f07cc7a86b5878ed45897cdf94961ef0d51f6 Mon Sep 17 00:00:00 2001
From: Franck Dary <franck.dary@lis-lab.fr>
Date: Tue, 12 Mar 2019 18:23:55 +0100
Subject: [PATCH] Fixed bug related to undoing parser actions

---
 transition_machine/include/Config.hpp | 4 ++++
 transition_machine/src/ActionBank.cpp | 2 ++
 transition_machine/src/Config.cpp     | 8 ++++++++
 3 files changed, 14 insertions(+)

diff --git a/transition_machine/include/Config.hpp b/transition_machine/include/Config.hpp
index 7e5f8a2..a1e4a6c 100644
--- a/transition_machine/include/Config.hpp
+++ b/transition_machine/include/Config.hpp
@@ -336,6 +336,10 @@ class Config
   void setEntropy(float entropy);
   float getEntropy() const;
   void addToEntropy(float entropy);
+  /// \brief Print a column content for debug purpose.
+  ///
+  /// \param index Index of the column to print.
+  void printColumnInfos(unsigned int index);
 };
 
 #endif
diff --git a/transition_machine/src/ActionBank.cpp b/transition_machine/src/ActionBank.cpp
index ed373d8..9306c79 100644
--- a/transition_machine/src/ActionBank.cpp
+++ b/transition_machine/src/ActionBank.cpp
@@ -354,6 +354,7 @@ std::vector<Action::BasicAction> ActionBank::str2sequence(const std::string & na
 
     auto apply = [](Config & c, Action::BasicAction & ba)
       {
+        ba.data = "";
         auto & govs = c.getTape("GOV");
         int b0 = c.getHead();
         int rootIndex = -1;
@@ -416,6 +417,7 @@ std::vector<Action::BasicAction> ActionBank::str2sequence(const std::string & na
 
     auto apply2 = [b2](Config & c, Action::BasicAction & ba)
       {
+        ba.data = "";
         auto & labels = c.getTape("LABEL");
         int b0 = c.getHead();
         int rootIndex = -1;
diff --git a/transition_machine/src/Config.cpp b/transition_machine/src/Config.cpp
index 758716d..d733828 100644
--- a/transition_machine/src/Config.cpp
+++ b/transition_machine/src/Config.cpp
@@ -619,3 +619,11 @@ void Config::Tape::maskIndex(int index)
   ref.maskIndex(index);
 }
 
+void Config::printColumnInfos(unsigned int index)
+{
+  for (auto & tape : tapes)
+    fprintf(stderr, "%s\t: %s\n", tape.getName().c_str(), tape[index-getHead()].c_str());
+
+  fprintf(stderr, "\n");
+}
+
-- 
GitLab