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")
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
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
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)
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)