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"); } }
///_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(); }