SubscriptExpression.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.expression.LHSExpressionIF;
import edu.udel.cis.vsl.tass.model.IF.expression.SubscriptExpressionIF;
import edu.udel.cis.vsl.tass.model.IF.type.ArrayTypeIF;
import edu.udel.cis.vsl.tass.model.IF.type.TypeIF.TypeKind;

public class SubscriptExpression extends BinaryExpression implements
		SubscriptExpressionIF {

	public SubscriptExpression(ModelFactoryIF factory, LHSExpressionIF array,
			Expression index) throws SyntaxException {
		super(factory, ExpressionKind.SUBSCRIPT, (Expression) array, index);

		if (array.type().kind() != TypeKind.ARRAY) {
			throw new SyntaxException(array,
					"expected expression of type array here");
		}
		if (index.type.kind() != TypeKind.INTEGER) {
			throw new SyntaxException(index,
					"expected expression of integer type here");
		}
		type = ((ArrayTypeIF) array.type()).elementType();
	}

	public String toString() {
		return left + "[" + right + "]";
	}

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