package code.ast;
/**
* Represents a postfix expression in AST (Abstract Syntax Tree)
*
* @author s-yamagiwa
*/
public class PostfixExpression extends Expression {
public enum Operator {
INCREMENT("++"), DECREMENT("--");
Operator(String symbol) {
this.symbol = symbol;
}
private final String symbol;
@Override
public String toString() {
return symbol;
}
}
private Expression operand;
private Operator operator;
public PostfixExpression(Expression operand, Operator operator) {
this.operand = operand;
this.operator = operator;
}
@Override
public Expression replace(Variable variable, Expression expression) {
return new PostfixExpression(operand.replace(variable, expression), operator);
}
public Expression getOperand() {
return operand;
}
public void setOperand(Expression operand) {
this.operand = operand;
}
public Operator getOperator() {
return operator;
}
public void setOperator(Operator operator) {
this.operator = operator;
}
@Override
public String toString() {
return operand.toString() + operator.toString();
}
}