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();
}
}