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