Exemplo n.º 1
0
        private void validador_comandos()
        {
            ///Linea

            Cola = new ArrayList();
            String tipo   = "";
            String accion = "";
            String nombre = "";
            String texto  = "";
            String ruta   = "";

            if (arreglo_etiquetas.Count != 0)
            {
                int size_array             = arreglo_etiquetas.Count;
                AbstractAutomata automata3 = new Linea(F_Linea, Tabla_Linea);
                for (int i = 1; i < size_array; i++)
                {
                    Validador_Etiquetas ve = (Validador_Etiquetas)arreglo_etiquetas[i];
                    for (int j = ve.Get_Linea_Entrada(); j < ve.Get_Linea_Salida(); j++)
                    {
                        bool valida1 = automata3.RecognizeToken(prueba[j].ToString(), j, true);
                        if (valida1)
                        {
                            ///Console.WriteLine("Cadena Valida");
                            //Console.WriteLine("Comando encontrado: " + automata3.Retornar_Palabra_Concatenada());
                            String    value      = automata3.Retornar_Palabra_Concatenada();
                            Char[]    delimiter  = { Convert.ToChar(34), '&' };
                            String[]  substrings = value.Split(delimiter);
                            ArrayList array_sub1 = new ArrayList();
                            foreach (var substring in substrings)
                            {
                                if (substring != "")
                                {
                                    ///Console.WriteLine(substring);
                                    array_sub1.Add(substring);
                                }
                            }
                            //Console.WriteLine(array_sub1[0].ToString()+"=="+array_sub1[2].ToString());
                            if (array_sub1[0].ToString() == array_sub1[2].ToString())
                            {
                                switch (array_sub1[0].ToString())
                                {
                                case "tipo":
                                    tipo = array_sub1[1].ToString();
                                    break;

                                case "accion":
                                    accion = array_sub1[1].ToString();
                                    break;

                                case "nombre":
                                    nombre = array_sub1[1].ToString();
                                    break;

                                case "texto":
                                    texto = array_sub1[1].ToString();
                                    if (texto == null)
                                    {
                                        texto = "";
                                    }
                                    break;

                                case "ruta":
                                    ruta = array_sub1[1].ToString();
                                    break;
                                }
                                ArrayList aux = automata3.RetornarToken();
                                aux.Add(automata3.Retornar_Palabra_Concatenada());
                                TokensAdd(aux);
                            }
                            else
                            {
                                Console.WriteLine("aalgo anda mal");
                            }
                        }
                        else
                        {
                            ///Console.WriteLine(automata3.Retornar_Palabra_Concatenada());
                            String    value      = automata3.Retornar_Palabra_Concatenada();
                            Char[]    delimiter  = { Convert.ToChar(34), '&' };
                            String[]  substrings = value.Split(delimiter);
                            ArrayList array_sub1 = new ArrayList();
                            foreach (var substring in substrings)
                            {
                                if (substring != "")
                                {
                                    ///Console.WriteLine(substring);
                                    array_sub1.Add(substring);
                                }
                            }
                            try
                            {
                                ///Console.WriteLine(array_sub1.Count);
                                if (array_sub1.Count >= 1 && array_sub1.Count < 3)
                                {
                                    if (array_sub1[0].ToString() == "comando" || array_sub1[array_sub1.Count - 1].ToString() == "lfscript")
                                    {
                                    }
                                    else
                                    {
                                        //Console.WriteLine("Error");
                                        ArrayList e = new ArrayList();
                                        e.Add(new Errores("", "", array_sub1[array_sub1.Count - 1].ToString(), "Cadena no valida"));
                                        concatenar_array(e);
                                    }
                                }
                            }
                            catch {
                            }
                        }
                    }
                    Cola.Add(new Comandos_Cola(tipo, accion, nombre, texto, ruta));
                }
                concatenar_array(automata3.RetornarError());
                arreglo_errores_linea.Add(automata3.RetornarError());
            }
            else
            {
                Console.WriteLine("Arreglo vacio");
            }
        }