예제 #1
0
        private String GenerarElegir()
        {
            String  cadena = "";
            FElegir elegir = (FElegir)Valor;

            cadena += elegir.Generar3D();
            return(cadena);
        }
예제 #2
0
        public void GenerarTablaSimbolos(Simbolo simbolo, String NombreAmbito)
        {
            switch (simbolo.Rol)
            {
            case Constante.TClase:
                InsertarTablaSimbolos(simbolo.Rol, simbolo.Tipo, NombreAmbito, simbolo.Nombre, simbolo.Tamaño.ToString(), simbolo.Posicion.ToString());
                foreach (Simbolo sim in simbolo.Ambito.TablaSimbolo)
                {
                    GenerarTablaSimbolos(sim, simbolo.Nombre);
                }
                break;

            case Constante.TMetodo:

                InsertarTablaSimbolos(simbolo.Rol, simbolo.Tipo, NombreAmbito, simbolo.Nombre, simbolo.Tamaño.ToString(), simbolo.Posicion.ToString());

                foreach (Simbolo sim in ((FMetodo)simbolo.Valor).Parametros)
                {
                    InsertarTablaSimbolos(sim.Rol, sim.Tipo, NombreAmbito + "_" + simbolo.Nombre, sim.Nombre, sim.Tamaño.ToString(), sim.Posicion.ToString());
                }

                foreach (Simbolo sim in simbolo.Ambito.TablaSimbolo)
                {
                    GenerarTablaSimbolos(sim, NombreAmbito + "_" + simbolo.Nombre);
                }

                break;

            case Constante.TConstructor:

                InsertarTablaSimbolos(simbolo.Rol, simbolo.Tipo, NombreAmbito, simbolo.Nombre, simbolo.Tamaño.ToString(), simbolo.Posicion.ToString());

                foreach (Simbolo sim in ((FMetodo)simbolo.Valor).Parametros)
                {
                    InsertarTablaSimbolos(sim.Rol, sim.Tipo, NombreAmbito + "_" + simbolo.Rol, sim.Nombre, sim.Tamaño.ToString(), sim.Posicion.ToString());
                }

                foreach (Simbolo sim in simbolo.Ambito.TablaSimbolo)
                {
                    GenerarTablaSimbolos(sim, NombreAmbito + "_" + simbolo.Rol);
                }

                break;

            case Constante.TPara:
                FPara para = (FPara)simbolo.Valor;
                //InsertarTablaSimbolos(simbolo.Rol, simbolo.Tipo, NombreAmbito, simbolo.Nombre, simbolo.Tamaño.ToString(), simbolo.Posicion.ToString());
                if (para.AccionAnterior.Rol.Equals(Constante.DECLARACION))
                {
                    GenerarTablaSimbolos(para.AccionAnterior, NombreAmbito + "_" + simbolo.Rol);
                }

                foreach (Simbolo sim in simbolo.Ambito.TablaSimbolo)
                {
                    GenerarTablaSimbolos(sim, NombreAmbito + "_" + sim.Rol);
                }
                break;

            case Constante.TSi:
                FSi si = (FSi)simbolo.Valor;
                //InsertarTablaSimbolos(simbolo.Rol, simbolo.Tipo, NombreAmbito, simbolo.Nombre, simbolo.Tamaño.ToString(), simbolo.Posicion.ToString());

                foreach (Simbolo sim in si.Ambito.TablaSimbolo)
                {
                    GenerarTablaSimbolos(sim, NombreAmbito + "_" + sim.Rol);
                }

                foreach (FSinoSi sinosi in si.SinoSi)
                {
                    //InsertarTablaSimbolos(Constante.TSinoSi, "", NombreAmbito, "", sinosi.Ambito.Tamaño.ToString(), (-1).ToString());
                    foreach (Simbolo sim in sinosi.Ambito.TablaSimbolo)
                    {
                        GenerarTablaSimbolos(sim, NombreAmbito + "_" + Constante.TSinoSi);
                    }
                }

                if (si.Sino != null)
                {
                    //InsertarTablaSimbolos(Constante.TSino, "", NombreAmbito, "", si.Sino.Ambito.Tamaño.ToString(), (-1).ToString());
                    foreach (Simbolo sim in simbolo.Ambito.TablaSimbolo)
                    {
                        GenerarTablaSimbolos(sim, NombreAmbito + "_" + Constante.TSino);
                    }
                }
                break;

            case Constante.TElegir:
                FElegir elegir = (FElegir)simbolo.Valor;
                //InsertarTablaSimbolos(Constante.TElegir, "", NombreAmbito, "", simbolo.Ambito.Tamaño.ToString(), simbolo.Posicion.ToString());
                foreach (FCaso caso in elegir.Casos)
                {
                    //InsertarTablaSimbolos(Constante.CASO, "", NombreAmbito + "_" + Constante.TElegir, "", caso.Ambito.Tamaño.ToString(), (-1).ToString());
                    foreach (Simbolo sim in caso.Ambito.TablaSimbolo)
                    {
                        GenerarTablaSimbolos(sim, NombreAmbito + "_" + Constante.TElegir + "_" + Constante.CASO);
                    }
                }

                if (elegir.Defecto != null)
                {
                    //InsertarTablaSimbolos(Constante.DEFECTO, "", NombreAmbito + "_" + Constante.TElegir, "", elegir.Defecto.Ambito.Tamaño.ToString(), (-1).ToString());
                    foreach (Simbolo sim in elegir.Defecto.Ambito.TablaSimbolo)
                    {
                        GenerarTablaSimbolos(sim, NombreAmbito + "_" + Constante.TElegir + "_" + Constante.DEFECTO);
                    }
                }
                break;

            default:
                if (simbolo.Rol.Equals(Constante.DECLARACION))
                {
                    InsertarTablaSimbolos(simbolo.Rol, simbolo.Tipo, NombreAmbito, simbolo.Nombre, simbolo.Tamaño.ToString(), simbolo.Posicion.ToString());
                }
                else
                {
                    if (simbolo.Tamaño > 0)
                    {
                        //InsertarTablaSimbolos(simbolo.Rol, simbolo.Tipo, NombreAmbito, simbolo.Nombre, simbolo.Tamaño.ToString(), simbolo.Posicion.ToString());
                        foreach (Simbolo sim in simbolo.Ambito.TablaSimbolo)
                        {
                            GenerarTablaSimbolos(sim, NombreAmbito + "_" + simbolo.Rol);
                        }
                    }
                }
                break;
            }
        }