Пример #1
0
        internal bool AgregarArregloParametroDeProc(string nombre, NodoTablaSimbolos.TipoDeDato tipoDeDato, NodoTablaSimbolos.TipoContexto tipoContexto, string nombreProc, string rango)
        {
            double rangoNum;

            if (!double.TryParse(rango, System.Globalization.NumberStyles.Number, new CultureInfo("es-AR"), out rangoNum))
            {
                NodoTablaSimbolos nodoConstante = this.listaNodos.Find(x => x.Nombre.ToUpper().Equals(rango.ToUpper()) && x.EsConstante);

                rangoNum = nodoConstante.Valor;
            }

            //o sea, que sea entero
            if (Math.Truncate(rangoNum) == rangoNum)
            {
                this.listaNodos.Add(new NodoTablaSimbolos(nombre, NodoTablaSimbolos.TipoDeEntrada.Parametro, tipoDeDato, true, false, tipoContexto, nombreProc)
                {
                    Valor = rangoNum
                });

                return(true);
            }
            else
            {
                //Esto seria un error, no se puede tener un arreglo con rango decimal
                return(false);
            }
        }
Пример #2
0
        public override bool Equals(object obj)
        {
            //
            // See the full list of guidelines at
            //   http://go.microsoft.com/fwlink/?LinkID=85237
            // and also the guidance for operator== at
            //   http://go.microsoft.com/fwlink/?LinkId=85238
            //

            if (obj == null || GetType() != obj.GetType())
            {
                return(false);
            }

            // safe because of the GetType check
            NodoTablaSimbolos nodo = (NodoTablaSimbolos)obj;

            // use this pattern to compare reference members
            if (Nombre.Equals(nodo.Nombre) && TipoEntrada.Equals(nodo.TipoEntrada))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #3
0
        internal NodoTablaSimbolos.TipoDeDato ObtenerTipoArreglo(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto)
        {
            NodoTablaSimbolos nodo = this.ObtenerArreglo(nombre, contexto, nombreContexto);

            return(nodo.TipoDato);

            //return this.ObtenerTipoVariable(nombre,NodoTablaSimbolos.TipoContexto.Global,string.Empty);
        }
Пример #4
0
        internal bool EsVariableGlobal(string nombre, NodoTablaSimbolos.TipoContexto tipoContexto, string nombreCont)
        {
            NodoTablaSimbolos nodo = ObtenerVariable(nombre, tipoContexto, nombreCont);

            return(nodo != null &&
                   nodo.Nombre.Equals(nombre) &&
                   nodo.TipoEntrada == NodoTablaSimbolos.TipoDeEntrada.Variable &&
                   nodo.Contexto == NodoTablaSimbolos.TipoContexto.Global);
        }
Пример #5
0
        internal bool EsParametroDeEsteProc(string nombre, NodoTablaSimbolos.TipoContexto tipoContexto, string nombreCont)
        {
            NodoTablaSimbolos nodo = ObtenerVariable(nombre, tipoContexto, nombreCont);

            return(nodo != null &&
                   nodo.Nombre.ToUpper().Equals(nombre.ToUpper()) &&
                   nodo.TipoEntrada == NodoTablaSimbolos.TipoDeEntrada.Parametro &&
                   nodo.Contexto == tipoContexto &&
                   nodo.NombreContextoLocal == nombreCont);
        }
Пример #6
0
        internal double RetornarValorConstante(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto)
        {
            NodoTablaSimbolos nodo = this.ObtenerVariable(nombre, contexto, nombreContexto);

            if (nodo.EsConstante)
            {
                return(nodo.Valor);
            }
            else
            {
                return(int.MinValue);
            }
        }
Пример #7
0
        internal bool AgregarArreglo(string nombre, NodoTablaSimbolos.TipoDeDato tdato, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto, string rango, bool esConst)
        {
            //Para que no falle pq se puso mal el rango del arrego, si viene en null, se pone en 1
            if (rango == null)
            {
                rango = "1";
            }

            double rangoNum;

            if (!double.TryParse(rango, System.Globalization.NumberStyles.Number, new CultureInfo("es-AR"), out rangoNum))
            {
                NodoTablaSimbolos nodoConstante = this.listaNodos.Find(x => x.Nombre.ToUpper().Equals(rango.ToUpper()) && x.EsConstante);

                rangoNum = nodoConstante.Valor;
            }

            //o sea, que sea entero
            if (Math.Truncate(rangoNum) == rangoNum)
            {
                this.listaNodos.Add(

                    new NodoTablaSimbolos(nombre, NodoTablaSimbolos.TipoDeEntrada.Variable,
                                          tdato, true, esConst, contexto,
                                          nombreContexto)
                {
                    Valor = rangoNum
                }

                    );

                return(true);
            }
            else
            {
                //Esto seria un error, no se puede tener un arreglo con rango decimal
                return(false);
            }
        }
Пример #8
0
        internal NodoTablaSimbolos.TipoDeDato ObtenerTipoProcedimiento(string nombre)
        {
            NodoTablaSimbolos nodo = this.ObtenerRutina(nombre, NodoTablaSimbolos.TipoDeEntrada.Procedimiento);

            return(nodo.TipoDato);
        }
Пример #9
0
        //internal List<string> ObtenerParametros(string nombre)
        //{
        //    List<NodoTablaSimbolos> nodos = this.listaNodos.FindAll(
        //        delegate(NodoTablaSimbolos _nodo)
        //        {
        //            return (_nodo.NombreContextoLocal.Equals(nombre) && (_nodo.TipoEntrada == NodoTablaSimbolos.TipoDeEntrada.Parametro));
        //        }
        //    );

        //    List<string> retorno = new List<string>();

        //    foreach (NodoTablaSimbolos nodo in nodos)
        //    {
        //        retorno.Add(nodo.Nombre);
        //    }

        //    return retorno;
        //}

        internal NodoTablaSimbolos.TipoDeDato ObtenerTipoFuncion(string nombre)
        {
            NodoTablaSimbolos nodo = this.ObtenerRutina(nombre, NodoTablaSimbolos.TipoDeEntrada.Funcion);

            return(nodo.TipoDato);
        }
Пример #10
0
        internal List <FirmaProc> ObtenerFirma(string nombre, NodoTablaSimbolos.TipoDeEntrada tipo)
        {
            NodoTablaSimbolos nodo = this.ObtenerRutina(nombre, tipo);

            return(nodo.Firma);
        }
Пример #11
0
        internal bool ExisteArregloEnEsteContexto(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto)
        {
            NodoTablaSimbolos nodo = ObtenerArreglo(nombre, contexto, nombreContexto);

            return(nodo != null && nodo.Contexto == contexto && nodo.NombreContextoLocal == nombreContexto);
        }
Пример #12
0
        internal double ObtenerTopeArreglo(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto)
        {
            NodoTablaSimbolos arr = ObtenerArreglo(nombre, contexto, nombreContexto);

            return(arr.Valor);
        }
Пример #13
0
        //public NodoTablaSimbolos.TipoContexto ObtenerContextoVariable(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto)
        //{
        //    NodoTablaSimbolos nodo = this.ObtenerVariable(nombre, contexto, nombreContexto);
        //    return nodo.Contexto;
        //}

        //public string ObtenerNombreContextoVariable(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto)
        //{
        //    NodoTablaSimbolos nodo = this.ObtenerVariable(nombre, contexto, nombreContexto);
        //    return nodo.NombreContextoLocal;
        //}

        internal bool EsModificableValorVarible(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto)
        {
            NodoTablaSimbolos nodo = this.ObtenerVariable(nombre, contexto, nombreContexto);

            return(!nodo.EsConstante);
        }
Пример #14
0
        internal NodoTablaSimbolos.TipoDeDato ObtenerTipoVariable(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto)
        {
            NodoTablaSimbolos nodo = this.ObtenerVariable(nombre, contexto, nombreContexto);

            return(nodo.TipoDato);
        }