diff --git a/transition_machine/src/Oracle.cpp b/transition_machine/src/Oracle.cpp index 1283b7c2871678966aebddd1860a04e6cb4b06ff..ccb2d6a75f572e419c1e57f988ba3f2b9fd83770 100644 --- a/transition_machine/src/Oracle.cpp +++ b/transition_machine/src/Oracle.cpp @@ -669,6 +669,21 @@ void Oracle::createDatabase() newState = "tagger"; movement = lastIndexDone[newState]-c.getHead()+1; lastIndexDone[previousState] = c.getHead(); + if (lastIndexDone[newState]+1 >= c.getTape("FORM").size()) + { + newState = "morpho"; + movement = lastIndexDone[newState]-c.getHead()+1; + if (lastIndexDone[newState]+1 >= c.getTape("FORM").size()) + { + newState = "lemmatizer_rules"; + movement = lastIndexDone["lemmatizer_case"]-c.getHead()+1; + if (lastIndexDone["lemmatizer_case"]+1 >= c.getTape("FORM").size()) + { + newState = "parser"; + movement = lastIndexDone[newState]-c.getHead()+1; + } + } + } if (c.endOfTapes()) { newState = "parser";