Пример #1
0
 def descripcion(self):
     msj = 'una secuencia de cosas de la forma:\n' + identar(self._parser.descripcion())
     if self._separador is None:
         msj += '\n'
     else:
         msj += '\nseparadas por:\n' + identar(self._separador.descripcion()) + '\ny '
     msj += 'terminadas por:\n' + identar(self._terminador.descripcion())
     return msj
Пример #2
0
 def __unicode__(self):
     res = []
     for costilla in self._entorno:
         res_costilla = []
         for k, v in sorted(costilla.items()):
             res_costilla.append(u'%s -> %s' % (k, v))
         res.append(u'{\n%s\n}' % (identar('\n'.join(res_costilla)),))
     return u'Entorno([\n%s\n])' % (identar(',\n'.join(res),))
Пример #3
0
 def __unicode__(self):
     s = []
     for k, v in self._casos:
         s.append(u'%s => %s' % (k, v))
     return u'TAnalisisDeCasosTopePila([\n%s\n])' % (
                 identar(',\n'.join(s)),
             )
Пример #4
0
 def __unicode__(self):
     s = []
     for k, v in self._casos:
         s.append(u'%s => %s' % (k, v))
     return u'TAnalisisDeCasosExpresion(%s, [\n%s\n])' % (
                 self._expresion,
                 identar(',\n'.join(s)),
             )
Пример #5
0
 def __unicode__(self):
     ps = []
     for p, v in self._parametros:
         ps.append(u'%s = %s' % (p, v))
     return u'TAplicacionDirectaConstructor(%s, [\n%s\n])' % (
         self._constructor,
         identar('\n'.join(map(unicode, ps)))
     )
Пример #6
0
 def descripcion(self):
     ds = []
     for p in self._parsers:
         if callable(p):
             ds.append('<thunk>')
             continue
         d = p.descripcion()
         if d is not None:
             ds.append(d)
     return 'alguna de las siguientes cosas:\n' + identar('\n'.join(ds))
Пример #7
0
    def mensaje_de_error(self, it):
        msj = u'Tu programa es fruta.'

        max_its = []
        for r in self.max_match(it):
            max_its = agregar_max_its(max_its, r)

        fallos = []
        for _it, subparser in max_its:
            descripcion = subparser.descripcion_completa()
            if descripcion is not None:
                fallos.append(descripcion)
            it2 = _it

        if fallos != []:
            if len(fallos) == 1:
                comentario = ''
            else:
                comentario = ' alguna de las siguientes cosas'
            msj += u'\nEsperaba%s:\n%s' % (comentario, identar('\n'.join(fallos)),)
            msj += u'\n---\nCerca de:\n\n%s\n' % (identar(it2.contexto()),)
        return msj
Пример #8
0
    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])
Пример #9
0
 def __unicode__(self):
     return u'TDefinicionDeTipoInductivo(%s, [\n%s\n])' % (
         self._nombre_tipo,
         identar('\n'.join(map(unicode, self._declaraciones_constructores))),
     )
Пример #10
0
 def __unicode__(self):
     return u'TDeclaracionConstructorConParametros(%s, [\n%s\n])' % (
         self.nombre_constructor,
         identar('\n'.join(map(unicode, self.nombres_parametros))),
     )
Пример #11
0
 def __unicode__(self):
     kvs = []
     for k, v in self._sustantivos.items():
         kvs.append(u'%s -> %s' % (k, v))
     return 'Tesoro(sustantivos = {\n' + identar(',\n'.join(kvs)) + '\n})'
Пример #12
0
 def descripcion(self):
     ds = [d for p in self._parsers for d in [p.descripcion()] if d is not None]
     return 'una secuencia de las siguientes cosas:\n' + identar('\n'.join(ds))
Пример #13
0
 def __unicode__(self):
     return u'TDefinicionDeFuncion(%s, [%s],\n%s\n)' % (
         self._verbo,
         unicode_list(self._parametros),
         identar(unicode(self._cuerpo))
     )
Пример #14
0
 def __unicode__(self):
     return u'TBloque([\n%s\n])' % (identar(unicode_list(self._subterminos, sep=u',\n')),)
Пример #15
0
 def __unicode__(self):
     return u'TInvocarVerbo(%s, [\n%s\n])' % (
         self._verbo,
         identar(unicode_list(self._argumentos, sep=u',\n'))
     )
Пример #16
0
 def __unicode__(self):
     return u'Estado(\n%s,\n%s\n)' % (
         identar(unicode(self.entorno)),
         identar('Pila([\n' + identar(',\n'.join(map(unicode, self.pila))) + '\n])')
     )