public class ASTOperatorExpression extends ASTExpression {
    
    public static final int ERROR = 0;
    public static final int PLUS = 1;
    public static final int MINUS = 2;
    public static final int MULTIPLY = 3;
    public static final int DIVIDE = 4;

    public static final String [] Names = { "ERROR", "+", "-","*","/"};
    
    public ASTOperatorExpression(ASTExpression left, ASTExpression right,
                                 int operator) {
        left_ = left;
        right_ = right;
        operator_ = operator;
    }

    public ASTOperatorExpression(ASTExpression left, ASTExpression right, 
                                 String operator) {
        left_ = left;
        right_ = right;
        if (operator.compareTo("+") == 0) 
            operator_ = PLUS;
        else if (operator.compareTo("-") == 0) 
            operator_  = MINUS;
        else if (operator.compareTo("*") == 0) 
            operator_  = MULTIPLY;
        else if (operator.compareTo("/") == 0) 
            operator_  = DIVIDE;
        else operator_ = ERROR;
    }
    public ASTExpression left() {
        return left_;
    }
    public ASTExpression right() {
        return right_;
    }
    public int operator() {
        return operator_;
    }

    public Object accept(ASTVisitor V) {
        return V.VisitOperatorExpression(this);
    }


    private ASTExpression left_;
    private ASTExpression right_;
    private int operator_;
}