Пример #1
0
        public String Generar3D()
        {
            String cadena = "";

            String retorno = TitusTools.GetEtq();

            if (!TitusTools.HayErrores())
            {
                cadena  = "\t\t//Comienza para\n";
                cadena += AccionAnterior.Generar3D();//asignacion de variables
                cadena += "\t" + retorno + ":\n";


                Nodo3D cond = Condicion.Generar3D();

                cadena += cond.Codigo;
                if (cond.Tipo == Constante.TBooleano)
                {
                    if (cond.V == "" || cond.F == "")
                    {
                        cond.V = TitusTools.GetEtq();
                        cond.F = TitusTools.GetEtq();


                        cadena += "\t" + "if " + cond.Valor + " == 1 goto " + cond.V + ";\n";
                        cadena += "\t" + "goto " + cond.F + ";\n";
                    }
                    cadena += "\t" + cond.V + ":\n";
                    foreach (Simbolo sim in Ambito.TablaSimbolo)//cuerpo si es verdadero
                    {
                        cadena += sim.Generar3D();
                    }
                    cadena += AccionSiguiente.Generar3D();//actualizacion de varaibles
                    cadena += "\t\t" + "goto " + retorno + ";\n";
                    cadena += "\t" + cond.F + "://Termina para\n";

                    cadena = cadena.Replace("§salir§;", "goto " + cond.F + ";\n");
                    cadena = cadena.Replace("§continuar§;", "goto " + cond.V + ";\n");
                }
                else
                {
                    TitusTools.InsertarError(Constante.TErrorSemantico, "El ciclo for esperaba un tipo booleano no un tipo " + cond.Tipo, TitusTools.GetRuta(), Padre.Fila, Padre.Columna);
                }
            }

            return(cadena);
        }