Beispiel #1
0
 def compsemanticas(self):
     self.i.compsemanticas()
     if (self.i.tipo != tipos.Cadena):
         self.tipo = self.i.tipo
     else:
         raise errores.ErrorSemantico(
             "No se puede cambiar el signo de una cadenas")
Beispiel #2
0
 def compsemanticas(self):
     self.i.compsemanticas()
     self.d.compsemanticas()
     if self.i.tipo != self.d.tipo:
         if (self.i.tipo == tipos.Real and self.d.tipo == tipos.Entero) or (
                 self.i.tipo == tipos.Entero and self.d.tipo == tipos.Real):
             self.tipo = tipos.Real
         else:
             raise errores.ErrorSemantico(
                 "No puedo sumar peras con limones ni cadenas con enteros")
     self.tipo = self.i.tipo
Beispiel #3
0
 def compsemanticas(self):
     self.i.compsemanticas()
     self.d.compsemanticas()
     if self.i.tipo == tipos.Cadena and self.d.tipo == tipos.Cadena:
         raise errores.ErrorSemantico("¿Y cómo divido yo dos cadenas?")
     if self.i.tipo == tipos.Entero and self.d.tipo == tipos.Entero:
         self.tipo = tipos.Entero
     elif (self.i.tipo == tipos.Real and self.d.tipo == tipos.Entero) or (
             self.i.tipo == tipos.Entero and self.d.tipo == tipos.Real) or (
                 self.i.tipo == tipos.Real and self.d.tipo == tipos.Real):
         self.tipo = tipos.Real
     else:
         self.tipo = tipos.Cadena
Beispiel #4
0
 def comprueba(self, cat):
     if self.componente.cat == "Identif":
         if not self.TS.comprobar(self.componente.valor):
             raise errores.ErrorSemantico(
                 "Error semántico Comprueba() - Dos identificadores con el nombre %s"
                 % self.componente.valor)
         else:
             self.TS.insertar(self.componente.valor)
     if self.componente.cat == "PR":
         if self.componente.valor == cat:
             self.avanza()
     elif self.componente.cat == cat:
         self.avanza()
     else:
         raise errores.ErrorSintactico(
             "Error sintáctico Comprueba() mientras comprobaba %s" % cat)
Beispiel #5
0
 def analizaLista_id(self):
     try:
         if self.componente.cat == "Identif":
             if not self.TS.comprobar(self.componente.valor):
                 raise errores.ErrorSemantico(
                     "Error semántico Comprueba() - Dos identificadores con el nombre %s"
                     % self.componente.valor)
             else:
                 self.TS.insertar(self.componente.valor)
             # <lista_id> -> id <resto_listaid>
             self.avanza()
             self.analizaResto_listaid()
         else:
             raise errores.ErrorSintactico(
                 "Error sintáctico analizaLista_id()")
     except errores.Error as err:
         sys.stderr.write("%s\n" % err)