#ifndef TRANSITION__H #define TRANSITION__H #include <vector> #include "Action.hpp" #include "Config.hpp" class Transition { private : std::string name; std::string state; std::vector<Action> sequence; std::function<int(const Config & config)> costDynamic; std::function<int(const Config & config)> costStatic; private : static int getNbLinkedWith(int firstIndex, int lastIndex, Config::Object object, int withIndex, const Config & config); static int getNbLinkedWithHead(int firstIndex, int lastIndex, Config::Object object, int withIndex, const Config & config); static int getNbLinkedWithDeps(int firstIndex, int lastIndex, Config::Object object, int withIndex, const Config & config); static int getFirstIndexOfSentence(int baseIndex, const Config & config); static int getLastIndexOfSentence(int baseIndex, const Config & config); void initWrite(std::string colName, std::string object, std::string index, std::string value); void initAdd(std::string colName, std::string object, std::string index, std::string value); void initEagerShift(); void initStandardShift(); void initEagerLeft_rel(std::string label); void initEagerRight_rel(std::string label); void initStandardLeft_rel(std::string label); void initStandardRight_rel(std::string label); void initDeprel(std::string label); void initEagerLeft(); void initEagerRight(); void initReduce_strict(); void initReduce_relaxed(); void initEOS(int bufferIndex); void initNothing(); void initIgnoreChar(); void initEndWord(); void initAddCharToWord(); void initSplitWord(std::vector<std::string> words); void initSplit(int index); void initTransformSuffix(std::string fromCol, std::string fromObj, std::string fromIndex, std::string toCol, std::string toObj, std::string toIndex, std::string rule); void initUppercase(std::string col, std::string obj, std::string index); void initUppercaseIndex(std::string col, std::string obj, std::string index, std::string inIndex); void initLowercase(std::string col, std::string obj, std::string index); void initLowercaseIndex(std::string col, std::string obj, std::string index, std::string inIndex); public : Transition(const std::string & name); void apply(Config & config); bool appliable(const Config & config) const; int getCostDynamic(const Config & config) const; int getCostStatic(const Config & config) const; const std::string & getName() const; }; #endif