NotExpression.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 NotExpression extends UnaryExpression {

	public NotExpression(ModelFactoryIF factory, Expression expression)
			throws SyntaxException {
		super(factory, ExpressionKind.NOT, expression);

		if (expression.type.kind() != TypeKind.BOOLEAN) {
			throw new SyntaxException(expression,
					"Not (!) requires boolean expression");
		}
		type = factory.booleanType();
	}

	public String toString() {
		return "!" + expression.atomString();
	}

	public String atomString() {
		return toString();
	}
}