bool ExpressionValue::isCompatibleWidth(SymbolType& other) const {
  if(!matchesType(other.isPrimitive())) {
    return false;
  } else if(!matchesDimensions(other.dimensions())) {
    return false;
  } else if(!matchesPrimitiveType(other.primitiveType())) {
    return false;
  }
  return true;
}
void ExpressionValue::set(SymbolType& s) {
  _isPrimitive  = s.isPrimitive();
  _primitiveType = s.primitiveType();
  _dimensions = s.dimensions();
}