text: import math
  from Instrucciones.TablaSimbolos.Instruccion import Instruccion
  from Instrucciones.TablaSimbolos.Tipo import Tipo_Dato, Tipo
  from Instrucciones.Excepcion import Excepcion
  from Instrucciones.TablaSimbolos.Simbolo3D import Simbolo3d
  
  class Trunc(Instruccion):
      def __init__(self, valor, strGram, linea, columna, strSent):
          Instruccion.__init__(self,None,linea,columna,strGram, strSent)
          self.valor = valor
  
      def ejecutar(self, tabla, arbol):
          super().ejecutar(tabla,arbol)
          resultado = self.valor.ejecutar(tabla,arbol)
          if self.valor.tipo.tipo != Tipo_Dato.SMALLINT and self.valor.tipo.tipo != Tipo_Dato.INTEGER and self.valor.tipo.tipo != Tipo_Dato.BIGINT and self.valor.tipo.tipo != Tipo_Dato.DECIMAL and self.valor.tipo.tipo != Tipo_Dato.NUMERIC and self.valor.tipo.tipo != Tipo_Dato.REAL and self.valor.tipo.tipo != Tipo_Dato.DOUBLE_PRECISION:
              error = Excepcion('42883',"Semántico","No existe la función trunc("+self.valor.tipo.toString()+")",self.linea,self.columna)
              arbol.excepciones.append(error)
              arbol.consola.append(error.toString())
              return error
          if resultado < 0:
              error = Excepcion('2201F',"Semántico","La función TRUNC únicamente acepta valores númericos positivos",self.linea,self.columna)
              arbol.excepciones.append(error)
              arbol.consola.append(error.toString())
              return error
          if isinstance(resultado,int):
              self.tipo = Tipo("",Tipo_Dato.DOUBLE_PRECISION)
              return math.trunc(resultado)
          else:
              self.tipo = Tipo("",Tipo_Dato.NUMERIC)
              return math.trunc(resultado)
      
      def traducir(self, tabla, arbol, cadenaTraducida):
          resultado = self.ejecutar(tabla, arbol)
          if isinstance(resultado,Excepcion):
              return resultado        
          codigo = ""
          temporal = arbol.generaTemporal()
          codigo += "\t" + temporal + " = " + str(resultado) + "\n"
          nuevo = Simbolo3d(self.tipo, temporal, codigo, None, None)
          return nuevo
  