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); } }
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); } }
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); }
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); }
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); }
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); } }
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); } }
internal NodoTablaSimbolos.TipoDeDato ObtenerTipoProcedimiento(string nombre) { NodoTablaSimbolos nodo = this.ObtenerRutina(nombre, NodoTablaSimbolos.TipoDeEntrada.Procedimiento); return(nodo.TipoDato); }
//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); }
internal List <FirmaProc> ObtenerFirma(string nombre, NodoTablaSimbolos.TipoDeEntrada tipo) { NodoTablaSimbolos nodo = this.ObtenerRutina(nombre, tipo); return(nodo.Firma); }
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); }
internal double ObtenerTopeArreglo(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto) { NodoTablaSimbolos arr = ObtenerArreglo(nombre, contexto, nombreContexto); return(arr.Valor); }
//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); }
internal NodoTablaSimbolos.TipoDeDato ObtenerTipoVariable(string nombre, NodoTablaSimbolos.TipoContexto contexto, string nombreContexto) { NodoTablaSimbolos nodo = this.ObtenerVariable(nombre, contexto, nombreContexto); return(nodo.TipoDato); }