private void btnEjecutar_Click(object sender, EventArgs e) { Matriz MT = new Matriz("1"); //Inicializo mi matriz de transicion en el estado 1 que es mi estado inicial int codAcsii = 0; //inicializo mis variables en 0 byte[] array; string respuesta = ""; string palabra = "", cadena2 = ""; string cadena = ""; contadorCadena = 0; contadorCome = 0; IDcontador = 0; ContCome = 0; ContCade = 0; ContId = 0; listaIDs.Clear(); ///Termina de inicializar valores cadena2 = richTextBox1.Text + " "; //guardo una cadena sin modificar cadena = richTextBox1.Text + "\u0003"; cadena = cadena.Replace(' ', '\u0003'); //convierto los espacios en blanco en mi caracter FDC cadena = cadena.Replace('\n', '\u0003'); //convierto los saltos de linea en mi caracter FDC // cadena=PreparaCadena(cadena); for (int i = 0; i < cadena.Length; i++) { array = Encoding.ASCII.GetBytes(cadena[i].ToString());//Se obtiene el codigo ACSII codAcsii = int.Parse(array[0].ToString()); if (codAcsii == '"' && contadorCadena == 0 && contadorCome == 0) //si entra aqui es que puede ser una cadena { cadena = PreparaCadena(cadena, i); //checa si la cadena tiene fin si es asi reemplaza los FDC previamente puestos por espacios en blanco } else if (codAcsii == '/' && contadorCadena == 0 && contadorCome == 0) //si entra aqui puede ser un comentario { contadorCome++; } else if (codAcsii == '*' && contadorCadena == 0 && contadorCome == 1)//si detecta un * puede ser un inicio de comentario { contadorCome++; } if (contadorCome == 2) //si el contador es igual a dos detecto un inicio de comentario { cadena = prepararComentario(cadena, i); //busca el fin de comentario para quitar los fin de cadena por espacio en blanco contadorCome = 0; //pongo el contador en 0 } respuesta = MT.ConsultarEstado(MT.ValidadCaracter(codAcsii), MT.Estado, dataGridView1); //ejecunto el metodo de la clase matriz if (respuesta != "OK") //si la respuesta es diferente de ok entra { if (respuesta == "ACEPTA") //si es acepta va por el token a la matriz { MT.ConsultarEstado(Conexion.columna, MT.Estado, dataGridView1); // MessageBox.Show(MT.Estado); DeterminarToken(MT.Estado, palabra, cadena2[i]); MT.Estado = "1";//me regreso al estado 1 y limpio todo palabra = ""; contadorCome = 0; contadorCadena = 0; } else { MessageBox.Show("Error en el estado:" + MT.Estado + " Caracter donde Inicio Error: " + Convert.ToChar(codAcsii) + " Total de errores: " + ((cadena.Count()) - i)); //muestra toda la informacion del error ocurrido break; } } palabra = palabra + Convert.ToChar(codAcsii).ToString(); //sigue la secuencia hasta encontrar una respuesta diferente de OK } }