private void button2_Click(object sender, EventArgs e) { Ejecucion3d nuevo = new Ejecucion3d(); ParseTreeNode raiz = nuevo.analizar3D1(consola.Text); if (raiz != null) { nuevo.optimizar(raiz); consola1.Text = Ejecucion3d.cadenaopti; } }
private void Ejecutar_Click(object sender, EventArgs e) { TabPage tabPagex = tabControl1.SelectedTab; Consola.Text = ""; foreach (FastColoredTextBox hijo in tabPagex.Controls) { String contenido = hijo.Text; // contenido = contenido.Replace("\\", "~"); //contenido = contenido.Replace("\r\n", "&"); //contenido = contenido.Replace("\n", "&"); //contenido = contenido.ToLower(); TS ts = new TS(); ts.inicio3d(); Ejecucion3d.Pila.Clear(); Ejecucion3d.stack.Clear(); Ejecucion3d.heap.Clear(); Ejecucion3d.linea.Clear(); Ejecucion3d.pm = 0; Ejecucion3d.am = 0; for (int i = 0; i < 100; i++) { Ejecucion3d nuevo = new Ejecucion3d(); nuevo.valor = ""; Ejecucion3d.stack.AddLast(nuevo); } for (int i = 0; i < 100; i++) { Ejecucion3d nuevo = new Ejecucion3d(); nuevo.valor = ""; Ejecucion3d.heap.AddLast(nuevo); } TS.TablaSimbolos.Clear(); TS.errore = ""; TS.tipoex = 0; TS.biffalse = false; TS.actualc = null; TS.actualM = null; TS.import.Clear(); TS.importadasgeneral.Clear(); TS.display.Clear(); Sintactico1.analizarolc(contenido); Ejecucion3d.escribir3d(); Ejecucion3d eje = new Ejecucion3d(); eje.analizar3D(Ejecucion3d.cadenota); Ejecucion3d.cadenota = ""; return; } }
private void debug_Click(object sender, EventArgs e) { String cadena = tresd.Text; _3DG gramatica = new _3DG(); LanguageData lenguaje = new LanguageData(gramatica); Parser parse = new Parser(lenguaje); ParseTree arbol = parse.Parse(cadena); ParseTreeNode raiz = arbol.Root; Program.ventana.optimizado.Text = cadena; Ejecucion3d ejec = new Ejecucion3d(); if (raiz != null) { Ejecucion3d.Pila.Clear(); Ejecucion3d.stack.Clear(); Ejecucion3d.heap.Clear(); Ejecucion3d.pm = 0; Ejecucion3d.am = 0; for (int i = 0; i < 100; i++) { Ejecucion3d nuevo = new Ejecucion3d(); nuevo.valor = ""; Ejecucion3d.stack.AddLast(nuevo); } for (int i = 0; i < 100; i++) { Ejecucion3d nuevo = new Ejecucion3d(); nuevo.valor = ""; Ejecucion3d.heap.AddLast(nuevo); } raiz = ejec.reparar(raiz); LinkedList <ParseTreeNode> lista = ejec.linealizar(raiz); Debuger deb = new Debuger(lista, cadena); deb.Show(); } }
public void ejecutardeb() { Ejecucion3d ejec = new Ejecucion3d(); String nombre = raiz.ElementAt(0).Term.Name; pos = 0; ParseTreeNode accion = raiz.ElementAt(pos); while (!nombre.Equals("fin")) { switch (nombre) { case "ASIGNACIONT": ejec.Asignartempo(accion); pos++; break; case "ASIGNAHP": ejec.asignahp(accion); pos++; break; case "ASIGNASP": ejec.asignasp(accion); pos++; break; case "IF": pos = ejec.IFF(accion, pos); break; case "IFFALSE": pos = ejec.IFFA(accion, pos); break; case "ASIGNASEL2": // ejec.asignaselfp2(accion); pos++; break; case "ASIGNASEL1": ejec.asignaselfp(accion); pos++; break; case "ASIGNADS": // ejec.asignads(accion); pos++; break; case "ASIGNASTACK": ejec.asignastack(accion); pos++; break; case "ASIGNAHEAP": ejec.asignaheap(accion); pos++; break; case "LLAMADA": pos = ejec.llamada(accion.ChildNodes.ElementAt(0).Token.Text, pos + 1); pos++; break; case "GOTO": pos = ejec.gotoo(accion.ChildNodes.ElementAt(1).Token.Text); pos++; break; case "IMPRIMIR": ejec.imprimir(accion.ChildNodes.ElementAt(3)); pos++; //por el momento break; case "RETORNO": pos = ejec.regreso(); banderaret = false; break; default: pos++; break; } if (pos == raiz.Count) { fin = true; goto fin; } accion = raiz.ElementAt(pos); nombre = accion.Term.Name; Range rango = new Range(consola, pos); consola.Selection = rango; consola.SelectionColor = System.Drawing.Color.Black; if (banderalinea && linea == pos) { banderalinea = false; } if (banderaeje && linea == pos) { banderaeje = false; debug.Resume(); } if (banderaeje) { Thread.Sleep(1000); dibujarStack(); dibujarHeap(); dibujarPila(); } if (!banderaret && !banderalinea && !banderaeje) { debug.Suspend(); } } fin :; }