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