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 + ")";
	}
}