Пример #1
0
        /*
         * public itemEntorno(tablaSimbolos tabla)
         * {
         *  this.tipo = new token("nulo");
         *  this.nombre = new token("--");
         *  this.valor = new itemValor();
         *  valor.setTypeNulo();
         *  this.visibilidad = new token("privado");
         *  this.dimension = 0;
         *  this.tabla = tabla;
         * }*/

        public itemEntorno(token nombre, token tipo, itemValor valor, token visibilidad, List <int> dimension, tablaSimbolos tabla)
        {
            //validando si lo que estoy esperando es un arreglo

            if (dimension.Count > 0)
            {
                if (dimension.Count == valor.dimensiones.Count)
                {
                    this.tipo   = tipo;
                    this.nombre = nombre;


                    //aqui tengo qee validar los objetos
                    this.valor = valor;
                    itemValor tempIt    = new itemValor();
                    String    tipoDato1 = tempIt.getTipoApartirDeString(tipo.valLower);

                    if (tipoDato1.Equals("objeto") != valor.isTypeNulo())
                    {
                        this.valor.setTypeObjeto(tipo.valLower);
                    }


                    this.visibilidad = visibilidad;
                    this.dimension   = valor.dimensiones; //asi ya tiene dimensiones definidas
                }
                else
                {
                    tabla.tablaErrores.insertErrorSemantic("Se esta recibiendo :" + valor.dimensiones.Count + " en la matriz : " + nombre.val + " de dimension:" + dimension.Count, nombre);
                }
            }
            else
            {
                this.tabla = tabla;

                if (valor.dimensiones.Count != 0)
                {
                    tabla.tablaErrores.insertErrorSemantic("Se está intentando guardar en la variable :" + nombre.val + " de tipo " + tipo.valLower + ", una matriz de dimension : " + valor.dimensiones.Count, nombre);
                }
                else if (sePuedeParsear(tipo.valLower, valor))
                {
                    this.tipo   = tipo;
                    this.nombre = nombre;


                    //guardar el valor parseado.

                    this.valor       = valor;
                    this.valor.valor = valor.getValorParseado(tipo.valLower);


                    itemValor tempIt    = new itemValor();
                    String    tipoDato1 = tempIt.getTipoApartirDeString(tipo.valLower);
                    if (tipoDato1.Equals("objeto") != valor.isTypeNulo())
                    {
                        this.valor.setTypeObjeto(tipo.valLower);
                    }



                    this.visibilidad = visibilidad;
                    this.dimension   = dimension;
                }
                else if (validandoTipo(tipo.valLower, valor))
                {
                    this.tipo   = tipo;
                    this.nombre = nombre;


                    //aqui tengo qee validar los objetos
                    this.valor = valor;
                    itemValor tempIt    = new itemValor();
                    String    tipoDato1 = tempIt.getTipoApartirDeString(tipo.valLower);
                    if (tipoDato1.Equals("objeto") != valor.isTypeNulo())
                    {
                        this.valor.setTypeObjeto(tipo.valLower);
                    }



                    this.visibilidad = visibilidad;
                    this.dimension   = dimension;
                }
                else
                {
                    tabla.tablaErrores.insertErrorSemantic("Se está intentando guardar en :" + nombre.val + " de tipo " + tipo.valLower + ", un valor de tipo " + valor.getTipo(), nombre);

                    //error semantico, se está intentando asiganar un valor diferente al declarado por la variable
                }
            }
        }