DivideExpression.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.SyntaxException;
import edu.udel.cis.vsl.tass.model.IF.type.TypeIF;
import edu.udel.cis.vsl.tass.model.IF.type.TypeIF.TypeKind;
public class DivideExpression extends BinaryExpression {
public DivideExpression(ModelFactoryIF factory, Expression left,
Expression right) throws SyntaxException {
super(factory, ExpressionKind.DIVIDE, left, right);
TypeIF leftType = left.type;
TypeIF rightType = right.type;
if (!leftType.isNumeric()) {
throw new SyntaxException(left, "Division requires numeric type");
}
if (!rightType.isNumeric()) {
throw new SyntaxException(right, "Division requires numeric type");
}
if (leftType.kind() == TypeKind.INTEGER) {
type = rightType;
} else {
type = leftType;
}
}
public String toString() {
return left.atomString() + "/" + right.atomString();
}
public String atomString() {
return "(" + this + ")";
}
}