BinaryExpression.java
package edu.udel.cis.vsl.tass.model.impl.expression;
import edu.udel.cis.vsl.tass.model.IF.ModelFactoryIF;
import edu.udel.cis.vsl.tass.model.IF.expression.BinaryExpressionIF;
public abstract class BinaryExpression extends Expression implements
BinaryExpressionIF {
protected Expression left;
protected Expression right;
protected BinaryExpression(ModelFactoryIF factory, ExpressionKind kind,
Expression left, Expression right) {
super(factory, kind);
if (left == null) {
throw new NullPointerException(
"The left subexpression cannot be null.");
}
if (right == null) {
throw new NullPointerException(
"The right subexpression cannot be null.");
}
this.left = left;
this.right = right;
freeVariables.addAll(left.freeVariables);
freeVariables.addAll(right.freeVariables);
}
public Expression left() {
return left;
}
public Expression right() {
return right;
}
public boolean equals(Object object) {
if (object instanceof BinaryExpression) {
BinaryExpression that = (BinaryExpression) object;
return kind == that.kind && left.equals(that.left)
&& right.equals(that.right);
}
return false;
}
public int hashCode() {
return left.hashCode() + right.hashCode() + 2048 * kind.hashCode();
}
}