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");
            }
        }
Exemplo n.º 2
0
        ///_automatas.Add(new Digito(F_Digito,Tabla_Digito));

        public Practica1(String ruta)
        {
            ///Comando
            int[] F_Comando = new int[] { 4 };
            int[,] Tabla_Comando = new int[, ] {
                { -1, 1, -1, -1, 0, -1 }, { 2, -1, -1, 4, 2, -1 }, { 2, -1, -1, 4, 2, -1 }, { 3, -1, -1, 4, 3, -1 }, { -1, -1, -1, -1, 4, -1 }
            };
            AbstractAutomata automata1 = new Comando(F_Comando, Tabla_Comando);
            Lector           arreglo   = new Lector();
            int linea = 0;

            prueba = arreglo.Arreglo_de_archivo(ruta);
            AbstractAutomata automata2 = new Linea(F_Linea, Tabla_Linea);

            foreach (string sOutput in prueba)
            {
                ///Console.WriteLine(sOutput);
                linea++;
                bool valida1_linea = automata2.RecognizeToken(sOutput, linea, false);
                if (!valida1_linea)
                {
                    bool valida1 = automata1.RecognizeToken(sOutput, linea, true);
                    if (valida1)
                    {
                        ///Console.WriteLine("Cadena Valida");
                        ///Console.WriteLine("Comando encontrado: " + automata1.Retornar_Palabra_Concatenada() + " Tipo: "+ automata1.Retornar_Tipo_Etiqueta());
                        ArrayList aux = automata1.RetornarToken();
                        EtiquetasAdd(automata1.Retornar_Palabra_Concatenada(), automata1.Retornar_Tipo_Etiqueta(), linea);
                        aux.Add(automata1.Retornar_Palabra_Concatenada());
                        TokensAdd(aux);
                        //for (int i = 0; i < aux.Count; i++)
                        //{
                        //    for (int j = 0; j < 10; j++)
                        //    {
                        //        Tokens[,] aux_token = lista.Lista_Tokens();
                        //        if (aux[i].ToString() == aux_token[0, j].get_lexema())
                        //        {
                        //            arreglo_tokens_.Add(aux_token[0, j]);
                        //        }
                        //    }
                        //}

                        /*if (automata1.Retornar_Palabra_Concatenada().Equals("lfscript")) {
                         *  Console.WriteLine("Si");
                         *  ///break;
                         * }*/
                    }
                    else
                    {
                        ///Console.WriteLine("Cadena Invalida");
                        //if (automata1.RetornarError() != null) {
                        //    arreglo_errores.Add(automata1.RetornarError());
                        //}
                        //Console.WriteLine("Comando " + arreglo_errores.Count);
                    }
                }
            }
            concatenar_array(automata1.RetornarError());
            arreglo_errores_comando = automata1.RetornarError();
            ///mostrararreglo();
            validador_comandos();
            Lets_do_this();
            ///Console.ReadLine();
        }