Files
kraken/src/ParseAction.cpp

49 lines
978 B
C++
Raw Normal View History

2013-05-23 01:35:54 -04:00
#include "ParseAction.h"
ParseAction::ParseAction(ActionType action) {
this->action = action;
this->reduceRule = NULL;
this->shiftState = -1;
}
ParseAction::ParseAction(ActionType action, ParseRule* reduceRule) {
2013-05-23 01:35:54 -04:00
this->action = action;
this->reduceRule = reduceRule;
this->shiftState = -1;
}
ParseAction::ParseAction(ActionType action, int shiftState) {
this->action = action;
this->reduceRule = NULL;
2013-05-23 01:35:54 -04:00
this->shiftState = shiftState;
}
ParseAction::~ParseAction() {
}
std::string ParseAction::actionToString(ActionType action) {
switch (action) {
case REDUCE:
return "reduce";
break;
case SHIFT:
return "shift";
break;
case ACCEPT:
return "accept";
break;
case REJECT:
return "reject";
break;
}
}
std::string ParseAction::toString() {
std::string outputString = actionToString(action);
if (reduceRule)
outputString += " " + reduceRule->toString();
if (shiftState)
outputString += " " + shiftState;
return(outputString);
}