private void Button1_Click(object sender, EventArgs e) { if (!rtb_entrada.Text.Equals(string.Empty)) { AnalizadorColette analizador = new AnalizadorColette(); string entrada = this.rtb_entrada.Text;//.Replace("\\", "\\\\"); if (analizador.AnalizarEntrada(entrada)) { MessageBox.Show("Archivo sin errores."); } else { MessageBox.Show("El archivo tiene errores."); this.ReporteErrores(analizador.Raiz); } } }
private void GraficarASTToolStripMenuItem_Click(object sender, EventArgs e) { if (tabArchivo.SelectedIndex != -1) { TabPage sPage = tabArchivo.SelectedTab; FastColoredTextBox ctbArchivo = (FastColoredTextBox)sPage.Controls[0]; TabControl tControl = (TabControl)sPage.Controls[2]; TabPage sPage3d = tControl.TabPages[0]; FastColoredTextBox ctb3D = (FastColoredTextBox)sPage3d.Controls[0]; if (!ctbArchivo.Text.Equals(string.Empty)) { AnalizadorColette analizador = new AnalizadorColette(); string entrada = ctbArchivo.Text; ctb3D.Clear(); txtOutput.Clear(); if (analizador.AnalizarEntrada(entrada)) { MessageBox.Show("Archivo sin errores."); ReporteErrores(analizador.Raiz); GraficarArbol(analizador.Raiz.Root); } else { MessageBox.Show("El archivo tiene errores."); tabSalida.SelectedTab = pageErrores; ReporteErrores(analizador.Raiz); } } } else { MessageBox.Show("No ha abierto un archivo colette.", "Error"); } }
private void Button2_Click(object sender, EventArgs e) { if (!rtb_entrada.Text.Equals(string.Empty)) { AnalizadorColette analizador = new AnalizadorColette(); string entrada = this.rtb_entrada.Text.Replace("\\", "\\\\"); if (analizador.AnalizarEntrada(entrada)) { if (analizador.Raiz.ParserMessages.Count > 0) { MessageBox.Show("El archivo tiene errores."); this.ReporteErrores(analizador.Raiz); } GraficarArbol(analizador.Raiz.Root); } else { MessageBox.Show("El archivo tiene errores."); this.ReporteErrores(analizador.Raiz); } } }
public override Result GetC3D(Ent e, bool funcion, bool ciclo, bool isDeclaracion, bool isObjeto, LinkedList <Error> errores) { if (!isDeclaracion) { Debugger(e, "Import"); } string archivo = DirActual + Direccion.Substring(1, Direccion.Length - 2); archivo = archivo.Replace("\\\\", "\\"); archivo = archivo.Replace("/", ""); if (Path.HasExtension(archivo)) { if (Path.GetExtension(archivo).ToLower().Equals(".colette")) { StreamReader reader = null; try { reader = new StreamReader(archivo); string contenido = reader.ReadToEnd(); if (contenido != null) { if (!contenido.Equals(string.Empty)) { AnalizadorColette analizador = new AnalizadorColette(); if (analizador.AnalizarEntrada(contenido)) { Arbol arbol = (Arbol)analizador.GenerarArbol(analizador.Raiz.Root); if (arbol != null) { Sentencias = new LinkedList <Nodo>(); LinkedList <Import> imports = new LinkedList <Import>(); foreach (Nodo n in arbol.Sentencias) { if (n is Import import) { import.DirActual = DirActual; import.GetC3D(e, false, false, false, false, errores); imports.AddLast(import); } else { Sentencias.AddLast(n); } } foreach (Import import in imports) { if (import.Sentencias != null) { foreach (Nodo n in import.Sentencias) { Sentencias.AddLast(n); } } } } } for (int i = 0; i < analizador.Raiz.ParserMessages.Count(); i++) { LogMessage m = analizador.Raiz.ParserMessages.ElementAt(i); if (m.Message.ToString().Contains("character")) { errores.AddLast(new Error("Léxico", m.Message.Replace("Invalid character", "Carácter inválido"), (m.Location.Line + 1), (m.Location.Column + 1))); } else { errores.AddLast(new Error("Sintáctico", m.Message.Replace("Syntax error, expected:", "Error de sintáxis, se esperaba:"), (m.Location.Line + 1), (m.Location.Column + 1))); } } return(null); } } errores.AddLast(new Error("Semántico", "Ocurrió un error leyendo el archivo " + archivo + ".", Linea, Columna)); } catch (Exception) { errores.AddLast(new Error("Semántico", "Ocurrió un error abriendo el archivo " + archivo + ".", Linea, Columna)); } } else { errores.AddLast(new Error("Semántico", "La extensión del archivo debe ser .colette " + archivo + ".", Linea, Columna)); } } else { errores.AddLast(new Error("Semántico", "No es un archivo lo que se desea importar" + archivo + ".", Linea, Columna)); } return(null); }
private void TraducirColette() { if (tabArchivo.SelectedIndex != -1) { TabPage sPage = tabArchivo.SelectedTab; FastColoredTextBox ctbArchivo = (FastColoredTextBox)sPage.Controls[0]; TabControl tControl = (TabControl)sPage.Controls[2]; TabPage sPage3d = tControl.TabPages[0]; FastColoredTextBox ctb3D = (FastColoredTextBox)sPage3d.Controls[0]; if (!ctbArchivo.Text.Equals(string.Empty)) { AnalizadorColette analizador = new AnalizadorColette(); string entrada = ctbArchivo.Text;//.Replace("\\", "\\\\"); ctb3D.Clear(); txtOutput.Clear(); if (analizador.AnalizarEntrada(entrada)) { //MessageBox.Show("Archivo sin errores."); ReporteErrores(analizador.Raiz); Arbol arbol = (Arbol)analizador.GenerarArbol(analizador.Raiz.Root); if (ctbArchivo.Name.Equals("")) { arbol.DirActual = Directory.GetCurrentDirectory() + "\\"; } else { string archivo = ctbArchivo.Name; arbol.DirActual = Directory.GetParent(archivo) + "\\"; } arbol.Debug = Debugger; if (arbol != null) { //MessageBox.Show("todo bien"); LinkedList <Error> errores = new LinkedList <Error>(); string c3d = arbol.GenerarC3D(errores); ctb3D.Text = c3d; tControl.SelectedTab = sPage3d; if (errores.Count() > 0) { MessageBox.Show("El archivo tiene errores."); tabSalida.SelectedTab = pageErrores; ReporteErroresAnalisis(errores); } } } else { MessageBox.Show("El archivo tiene errores."); tabSalida.SelectedTab = pageErrores; ReporteErrores(analizador.Raiz); } } } else { MessageBox.Show("No ha abierto un archivo colette.", "Error"); } }