diff --git a/transition_machine/src/Config.cpp b/transition_machine/src/Config.cpp index ca4a2cbbaa3e824b4e20fd6c7c468181a0f8fe29..42c993b649fa9e9119e7bc8326934e4c6737caaf 100644 --- a/transition_machine/src/Config.cpp +++ b/transition_machine/src/Config.cpp @@ -735,7 +735,10 @@ bool Config::Tape::headIsAtEnd() const if (head >= ref.getLastIndex()) return true; - return !getHyp(0).empty() && getHyp(1).empty(); + if (ProgramParameters::rawInput) + return !getHyp(0).empty() && getHyp(1).empty(); + + return !getRef(0).empty() && getRef(1).empty(); } int Config::Tape::size() diff --git a/transition_machine/src/Oracle.cpp b/transition_machine/src/Oracle.cpp index 2a2a945c2ea1e159ccad1bb436dd98fe7a703226..508fc3d907501aad094f9596267ebdc0b53ab21f 100644 --- a/transition_machine/src/Oracle.cpp +++ b/transition_machine/src/Oracle.cpp @@ -414,6 +414,9 @@ void Oracle::createDatabase() movement = 1; } + if (c.isFinal()) + return std::string(""); + return "MOVE " + newState + " " + std::to_string(movement); }, [](Config &, Oracle *, const std::string &) @@ -451,6 +454,8 @@ void Oracle::createDatabase() { newState = "lemmatizer_lookup"; movement = 1; + if (c.isFinal()) + return std::string(""); } return "MOVE " + newState + " " + std::to_string(movement); @@ -591,6 +596,9 @@ void Oracle::createDatabase() { newState = "parser"; movement = 1; + + if (c.isFinal()) + return std::string(""); } else if (previousState == "error_parser") { @@ -654,6 +662,8 @@ void Oracle::createDatabase() { newState = "tagger"; movement = 1; + if (c.isFinal()) + return std::string(""); } else newState = "unknown("+std::string(ERRINFO)+")("+previousState+")("+previousAction+")";