-
Franck Dary authoredFranck Dary authored
Transition.hpp 977 B
#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)> cost;
private :
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 initShift();
void initLeft(std::string label);
void initRight(std::string label);
void initReduce();
void initEOS();
void initNothing();
void initIgnoreChar();
void initEndWord();
void initAddCharToWord();
void initSplitWord(std::vector<std::string> words);
public :
Transition(const std::string & name);
void apply(Config & config);
bool appliable(const Config & config) const;
int getCost(const Config & config) const;
const std::string & getName() const;
};
#endif