AndExpression.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.TypeKind;
public class AndExpression extends BinaryExpression {
public AndExpression(ModelFactoryIF factory, Expression left,
Expression right) throws SyntaxException {
super(factory, ExpressionKind.AND, left, right);
if (left.type.kind() != TypeKind.BOOLEAN) {
throw new SyntaxException(left,
"&& requires boolean type but left operand has type "
+ left.type);
}
if (right.type.kind() != TypeKind.BOOLEAN) {
throw new SyntaxException(right,
"&& requires boolean type but right operand has type "
+ right.type);
}
type = factory.booleanType();
}
public String toString() {
return left.atomString() + " && " + right.atomString();
}
public String atomString() {
return "(" + this + ")";
}
}