def __unicode__(self): res = [] for param in self._nombres_parametros: if param in self._valores_parametros: param_s = tesoro_actual().sustantivo_comun_singular(param) res.append(u'%s: %s' % (param_s, self._valores_parametros[param])) if res == []: nombre_s = tesoro_actual().sustantivo_comun_singular_con_articulo_determinado(self._nombre_constructor) return nombre_s elif len(res) == 1: nombre_s = tesoro_actual().sustantivo_comun_singular_con_articulo_indeterminado(self._nombre_constructor) return nombre_s + ' que tiene como ' + res[0] else: nombre_s = tesoro_actual().sustantivo_comun_singular_con_articulo_indeterminado(self._nombre_constructor) return nombre_s + ' que tiene\n' + identar(',\n'.join(res[:-1]) + '\ny ' + res[-1])
def evaluar_en(self, estado): tipo = TTipoInductivo( tesoro_actual().sustantivo_comun_singular(self._nombre_tipo) ) for decl in self._declaraciones_constructores: constructor = TConstructor( self, decl.nombre_constructor, decl.nombres_parametros, ) estado.entorno.declarar(decl.nombre_constructor, constructor) tipo.agregar_constructor(constructor) estado.entorno.declarar(self._nombre_tipo, tipo) yield TNada()