def temp_name(self, expr):
    c = expr.__class__
    if c is PrimCall:
      return expr.prim.name
    elif c is Attribute:
      if expr.value.__class__ is Var:
        return names.original(expr.value.name) + "_" + expr.name
      else:
        return expr.name
    elif c is Attribute:
      if expr.value.__class__ is Var:
        return "%s_%s" % (expr.value.name, expr.name)
      else:
        return expr.name
    elif c is Index:
      idx_t = expr.index.type
      if isinstance(idx_t, SliceT) or \
         (isinstance(idx_t, TupleT) and \
          any(isinstance(elt_t, SliceT) for elt_t in idx_t.elt_types)):
        return "slice"
      else:
        return "elt"
    elif c is TupleProj:
      if expr.tuple.__class__ is Var:
        original = names.original(expr.tuple.name)
        return "%s%d_elt%d" % (original, names.versions[original], expr.index)
      else:
        return "tuple_elt%d" % expr.index
    elif c is Var:
      return names.refresh(expr.name) 
    else:
      return "temp"
dataset/ETHPy150Open iskandr/parakeet/parakeet/builder/core_builder.py/CoreBuilder.temp_name/original