From d11a597ab2a7cbeb20bff761b16972c2ba35c329 Mon Sep 17 00:00:00 2001
From: Franck Dary <franck.dary@lis-lab.fr>
Date: Sat, 16 Nov 2019 15:33:56 +0100
Subject: [PATCH] Added error message

---
 transition_machine/src/Oracle.cpp | 19 ++++++++++++++++++-
 1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/transition_machine/src/Oracle.cpp b/transition_machine/src/Oracle.cpp
index 8838de4..7d1b27f 100644
--- a/transition_machine/src/Oracle.cpp
+++ b/transition_machine/src/Oracle.cpp
@@ -245,6 +245,12 @@ void Oracle::createDatabase()
 
     if (action == "ADDCHARTOWORD" && currentWordRef.size() > currentWordHyp.size())
     {
+      if (c.hasTape("ID") && c.getTape("ID").getRef(0).empty())
+      {
+        fprintf(stderr, "ERROR (%s) : ID.getRef(0) is empty. Aborting.\n", ERRINFO);
+        exit(1);
+      }
+
       if (c.hasTape("ID") && util::split(c.getTape("ID").getRef(0), '-').size() > 1)
         return 1;
 
@@ -968,17 +974,28 @@ void Oracle::createDatabase()
     auto & eos = c.getTape(ProgramParameters::sequenceDelimiterTape);
 
     int head = c.getHead();
+    int stackHead = c.stackEmpty() ? 0 : c.stackTop();
 
     if (head >= eos.size())
       return action == "EOS" ? 0 : 1;
 
+    if (ids.getRef(0).empty())
+    {
+      fprintf(stderr, "ERROR (%s) : ID.getRef(0) is empty. Aborting.\n", ERRINFO);
+      exit(1);
+    }
+    if (ids.getRef(stackHead-head).empty())
+    {
+      fprintf(stderr, "ERROR (%s) : ID.getRef(stackHead-head) is empty. Aborting.\n", ERRINFO);
+      exit(1);
+    }
+
     bool headIsMultiword = util::split(ids.getRef(0), '-').size() > 1;
     bool headIsEmptyNode = util::split(ids.getRef(0), '.').size() > 1;
     int headGov = -1;
     try {headGov = head + std::stoi(govs.getRef(0));}
     catch (std::exception &) {headGov = -1;}
 
-    int stackHead = c.stackEmpty() ? 0 : c.stackTop();
     bool stackHeadIsMultiword = util::split(ids.getRef(stackHead-head), '-').size() > 1;
     bool stackHeadIsEmptyNode = util::split(ids.getRef(stackHead-head), '.').size() > 1;
     int stackGov = -1;
-- 
GitLab