Expression.java
package edu.udel.cis.vsl.tass.model.impl.expression;
import java.util.Collection;
import java.util.HashSet;
import edu.udel.cis.vsl.tass.model.IF.ModelFactoryIF;
import edu.udel.cis.vsl.tass.model.IF.expression.ExpressionIF;
import edu.udel.cis.vsl.tass.model.IF.type.TypeIF;
import edu.udel.cis.vsl.tass.model.IF.variable.VariableIF;
import edu.udel.cis.vsl.tass.util.Source;
public abstract class Expression implements ExpressionIF {
protected ModelFactoryIF factory;
protected Collection<VariableIF> freeVariables = new HashSet<VariableIF>();
protected TypeIF type;
protected ExpressionKind kind;
private Source sourceCode;
private Object dynamicValue;
public Expression(ModelFactoryIF factory, ExpressionKind kind) {
this.factory = factory;
this.kind = kind;
}
@Override
public Collection<VariableIF> freeVariables() {
return freeVariables;
}
public TypeIF type() {
return type;
}
public ExpressionKind kind() {
return kind;
}
public Source getSource() {
return sourceCode;
}
public void setSource(Source sourceCode) {
this.sourceCode = sourceCode;
}
public void setDynamicValue(Object object) {
this.dynamicValue = object;
}
public Object dynamicValue() {
return dynamicValue;
}
}