private void AceptarBtn_Click(object sender, EventArgs e) { TablaErrores cerrar = new TablaErrores(); cerrar.Hide(); }
private void analizarToolStripMenuItem_Click(object sender, EventArgs e) { /*wenfwenfoiwe****wdhiuwqhd**************jiooihih*/ listaTokens = new List <token>(); listaErrores = new List <Errores>(); int fila = 1; int columna = 1; int noToken = 0; int noError = 0; string cadena = editorTextoRichtxt.Text; int estado = 0; string lexema = ""; char letra = ' '; // for (int i = 0; i < cadena.Length; i++) { letra = Convert.ToChar(cadena.Substring(i, 1)); switch (estado) { case 0: if (letra == 13 || letra == 9) { //Salto de Carro espacio estado = 0; lexema = ""; } else if (letra == 10) //aumentar la fila para los saltos de linea { columna = 1; fila++; } else if (char.IsLetter(letra)) //para las letras (ya sean mayusculas o minusculas) { estado = 1; lexema += letra; } else if (char.IsDigit(letra)) // para los digitos { estado = 2; lexema += letra; } else if (letra == 59 || letra == 123 || letra == 125) // para los simbolos ({,},;) { estado = 6; lexema += letra; i--; } else if (letra == 58) // para los dos puntos { estado = 3; lexema += letra; } else if (letra == 34) //para las comillas { estado = 4; lexema += letra; } else { estado = 0; string error1 = Convert.ToString(letra); guardarErrores(noError, error1, "componente lexico desconocido", fila, columna); noError++; columna++; lexema = ""; } break; case 1: if (char.IsLetter(letra) || char.IsDigit(letra) || letra == 95) { lexema += letra; } else { if (!validarPalabraReservada(lexema).Equals("")) { estado = 0; string PalabraReservada = Convert.ToString(lexema); GuadarToken(noToken, PalabraReservada, "Palabra Reservada", fila, columna); noToken++; columna++; lexema = ""; i--; // CambiarColor(ID, Color.Orange, 0); } else { estado = 0; string ID = Convert.ToString(lexema); GuadarToken(noToken, ID, "ID", fila, columna); noToken++; columna++; lexema = ""; i--; } } break; case 2: if (char.IsDigit(letra)) { lexema += letra; } else { estado = 0; string ID = Convert.ToString(lexema); GuadarToken(noToken, ID, "Digito", fila, columna); noToken++; columna++; lexema = ""; i--; CambiarColor(ID, Color.Yellow, 0); } break; case 3: if (letra == 58) // dos puntos de nuevo { estado = 5; lexema += letra; } else { estado = 0; string ID = Convert.ToString(lexema); GuadarToken(noToken, ID, "Dos puntos", fila, columna); noToken++; columna++; lexema = ""; i--; } break; case 4: if (letra != 34) { estado = 4; lexema += letra; } else if (letra == 34) { estado = 6; lexema += letra; i--; } break; case 5: if (letra == 61) { estado = 6; lexema += letra; i--; } else { estado = 0; string error2 = Convert.ToString(lexema); guardarErrores(noError, error2, "componente lexico desconocido", fila, columna); noError++; columna++; lexema = ""; i--; } break; case 6: if (letra == 59 || letra == 123 || letra == 125) { if (letra == 59) { estado = 0; string ID = Convert.ToString(lexema); GuadarToken(noToken, ID, "Punto y coma", fila, columna); noToken++; columna++; lexema = ""; } else if (letra == 123) { estado = 0; string ID = Convert.ToString(lexema); GuadarToken(noToken, ID, "llave que abre", fila, columna); noToken++; columna++; lexema = ""; } else if (letra == 125) { estado = 0; string ID = Convert.ToString(lexema); GuadarToken(noToken, ID, "llave que cierra", fila, columna); noToken++; columna++; lexema = ""; } } else if (letra == 34) { estado = 0; string ID = Convert.ToString(lexema); GuadarToken(noToken, ID, "Cadena", fila, columna); noToken++; columna++; lexema = ""; } else if (letra == 61) { estado = 0; string ID = Convert.ToString(lexema); GuadarToken(noToken, ID, "Asignacion", fila, columna); noToken++; columna++; lexema = ""; } break; } } if (listaErrores.Count != 0)//si hay errores, muestra tabla de errores { TablaErrores abrirErr = new TablaErrores(); abrirErr.Show(); MessageBox.Show("el codigo se encuentra con errores lexicos" + "\n" + "ver errores en la tabla los errores y corregir todos los errores lexicos " + "\n" + "para generar el Administrador de Documentos"); } else if (listaTokens.Count == 0 && listaErrores.Count == 0) { MessageBox.Show("El texto ingresado al editor de texto no es valido" + "\n" + "porfavor ingrese codigo correcto al editor"); } if (listaErrores.Count == 0) { if (listaTokens.Count != 0) { CambiarColor(":", Color.Pink, 0); CambiarColor(";", Color.Red, 0); CambiarColor("{", Color.Purple, 0); CambiarColor("}", Color.Purple, 0); CambiarColor("::=", Color.Blue, 0); for (int j = 0; j < listaTokens.Count; j++)// para las palabras reservadas { string token = listaTokens[j].Lexema.ToLower(); for (int k = 0; k < palabrasReservadas.Length; k++) { if (token.Equals(palabrasReservadas[k])) { CambiarColor(listaTokens[j].Lexema, Color.Cyan, 0); } } } for (int j = 0; j < listaTokens.Count; j++)// para los ID de mes { string token = listaTokens[j].Lexema.ToLower(); if (token.Equals("mes")) { CambiarColor(listaTokens[j + 2].Lexema, Color.Orange, 0); } } for (int j = 0; j < listaTokens.Count; j++)// para los ID de nombre { string token = listaTokens[j].Lexema.ToLower(); if (token.Equals("nombre")) { CambiarColor(listaTokens[j + 2].Lexema, Color.Orange, 0); } } for (int j = 0; j < listaTokens.Count; j++)// para las cadenas de path { string token = listaTokens[j].Lexema.ToLower(); if (token.Equals("path")) { CambiarColor(listaTokens[j + 2].Lexema, Color.Green, 0); } } MessageBox.Show("El texto se ah analizado correctamente, y no se encontraron errores lexicos"); ObtenerDatosTreeView(); AdminDoc abrir = new AdminDoc(); abrir.Show(); } } }