示例#1
0
 public Simbolo(Simbolo sim)
 {
     this.Visibilidad = sim.Visibilidad;
     this.Tipo        = sim.Tipo;
     this.Nombre      = sim.Nombre;
     this.Rol         = sim.Rol;
     this.Fila        = sim.Fila;
     this.Columna     = sim.Columna;
     this.Ambito      = sim.Ambito;
     this.Tamaño      = sim.Tamaño;
     this.Posicion    = sim.Posicion;
     this.Hermano     = sim.Hermano;
     this.Padre       = sim.Padre;
     this.Valor       = sim.Valor;
     this.este        = sim.este;
 }
示例#2
0
 public static void InsertarAmbito(Ambito ambito)
 {
     //insertamos el tope de ambito
     Tabla.Add(new Variable(Constante.Tope, Constante.Tope, 0, 0, null, null));
     foreach (Simbolo sim in ambito.TablaSimbolo)
     {
         if (sim.Rol.Equals(Constante.ASIGNACION))
         {
             FAsignacion3D asignacion = (FAsignacion3D)sim.Valor;
             if (asignacion.Tipo.Equals(Constante.Temporal))
             {
                 if (!ExisteVariable(asignacion.Temporal))
                 {
                     InsertarVariable(new Variable(asignacion.Temporal, Constante.Id, 0, 0, null, null));
                 }
             }
         }
     }
 }
示例#3
0
        public static void Optimizar(Ambito Metodos)
        {
            Optimizado = new List <Simbolo>();
            int tamanio = size;

            foreach (Simbolo metodo in Metodos.TablaSimbolo)
            {
                List <Simbolo> Mirilla = new List <Simbolo>();
                int            i       = 0;
                List <Simbolo> Ambito  = new List <Simbolo>();
                int            l       = 0;
                int            tope    = metodo.Ambito.TablaSimbolo.Count;
                for (l = 0; l < tope; l++)
                {
                    Mirilla.Add(metodo.Ambito.TablaSimbolo[l]);
                    if (!(i < size) || !(l < tope - 1))
                    {
                        AplicarReglas(Mirilla);
                        //metodo.Ambito.TablaSimbolo = Mirilla;
                        foreach (Simbolo sim in Mirilla)
                        {
                            Ambito.Add(sim);
                        }
                        Mirilla = new List <Simbolo>();
                        i       = -1;
                    }
                    else
                    {
                        i++;
                    }
                }
                metodo.Ambito.TablaSimbolo = Ambito;
            }

            ImprimirOptimizacion(Metodos);
        }
示例#4
0
 public Simbolo(String visibilidad, String tipo, String nombre, String rol, int fila, int columna, Ambito ambito, Object valor)
 {
     this.Visibilidad = visibilidad;
     this.Tipo        = tipo;
     this.Nombre      = nombre;
     this.Rol         = rol;
     this.Fila        = fila;
     this.Columna     = columna;
     this.Ambito      = ambito;
     this.Valor       = valor;
     this.Tamaño      = this.Ambito.Tamaño;
     this.Posicion    = -1;
 }
示例#5
0
 public Ejecucion3D(Ambito codigo3d)
 {
     this.Codigo3D = codigo3d;
 }