public static void Main(string[] args) { AnalizadorSintactico syntax = new AnalizadorSintactico(args[0]); syntax.parse(); syntax.print(); }
private void btnCompilar_Click(object sender, EventArgs e) { ValoresGlobales.valores().LimpiarDatos(); ValoresGlobales.valores().elementoRaiz = ucdfd1.ObtenerRaiz(); AnalizadorSintactico analisSintactico = new AnalizadorSintactico(); AnalizadorSemantico analisisSemantico = new AnalizadorSemantico(); GenerarCodigo generarCodigo = new GenerarCodigo(); analisSintactico.GenerarArbol(); if (!ValoresGlobales.valores().tablaDeErrores.Existen()) { analisisSemantico.AnalizarTipos(); } //Se verifica si existen errores o no dentro del codigo antes de compilarlo if (!ValoresGlobales.valores().tablaDeErrores.Existen()) { if (txtNombre.Text == "") { txtNombre.Text = "Ejecutable"; } generarCodigo.GenerarEjecutable(txtNombre.Text); System.Diagnostics.Process.Start(txtNombre.Text + ".exe"); } else { FrmTablaDeErrores frmTablaDeErrores = new FrmTablaDeErrores(); frmTablaDeErrores.Show(); } }
private void eJECUTARToolStripMenuItem_Click(object sender, EventArgs e) { try { if (escritorsql.TEXTO() != null) { String miText = escritorsql.TEXTO(); if (escritorsql.TEXTOSELECCIONADO().Length > 0) { miText = escritorsql.TEXTOSELECCIONADO(); } AnalizadorLexico lexico = new AnalizadorLexico(); //AnalizadorSintactico sintaxis = new AnalizadorSintactico(); tokens = lexico.ObtenerTokens(miText); tokensAnalizar = lexico.tokensAnalizar; errores = lexico.Errores; Console.WriteLine("\n tama;o de tokens analizar " + tokensAnalizar.Count); if (errores.Count() > 0) { vERTABLASToolStripMenuItem.Enabled = false; } else { vERTABLASToolStripMenuItem.Enabled = true; } for (int i = 0; i < tokens.Count(); i++) { Token miToken = tokens[i]; Console.WriteLine("Lexema: " + miToken.Lexema + " Token: " + miToken.Token1 + " Tipo: " + miToken.Tipo + " Color" + miToken.Color + " Fila" + miToken.Fila + " Columna" + miToken.Columna); } Console.WriteLine("\n ========iniciando analizador sintactico============="); AnalizadorSintactico sintactico = new AnalizadorSintactico(tokensAnalizar); sintactico.Tablas = tablas; sintactico.analizar(); erroresSintacticos = sintactico.Errores; escritorsql.InsertarErrores(erroresSintacticos); Arbol arbol = new Arbol(); arbol.ImprimirNodos(sintactico.Principal, 1); // tokensAnalizar.Clear(); escritorsql.InsertarTexto(lexico.TokensArchivo); graficador.Raiz = sintactico.Principal; if (erroresSintacticos.Count > 0 || errores.Count > 0) { vERTABLASToolStripMenuItem.Enabled = false; bntArbol.Enabled = false; } else { vERTABLASToolStripMenuItem.Enabled = true; bntArbol.Enabled = true; } } } catch (Exception ex) { MessageBox.Show("Debe Cargar un archivo primero"); Console.WriteLine(ex); } }
private void cargarInfoConsola_Click_1(object sender, EventArgs e) { String[] lineasEntradas = entradaDatosConsola.Lines; //salidaDatos.Lines = lineasEntradas; Resetear(); for (int i = 0; i < lineasEntradas.Length; i++) { Cache.obtenerCache().AgregarLinea(lineasEntradas[i]); } try { //AnalizadorLexico analizador = new AnalizadorLexico(); AnalizadorSintactico AnaSin = new AnalizadorSintactico(); Dictionary <string, object> Resultados = AnaSin.Analizar(depurar); ComponenteLexico Componente = (ComponenteLexico)Resultados["COMPONENTE"]; Stack <double> Pila = (Stack <double>)Resultados["PILA"]; //while (!Componente.ObtenerCategoria().Equals(Categoria.FIN_DE_ARCHIVO)) //{ // //MessageBox.Show(componente.ToString()); // Componente = analizador.Analizar(); //} LlenarTablas(); if (ManejadorErrores.HayErrores()) { MessageBox.Show("Hay problemas de compilacion. Revise la información de los errores encontrados..."); } else if (Categoria.FIN_DE_ARCHIVO.Equals(Componente.ObtenerCategoria())) { MessageBox.Show("El programa se encuentra bien escrito"); if (Pila.Count == 1) { string Resultado = Convert.ToString(Pila.Pop()); MessageBox.Show("La operación arrojó como resultado: " + Resultado); salidaDatos.Text = Resultado; } else { MessageBox.Show("Faltaron números por evaluar"); } } else { MessageBox.Show("Aunque el programa se encuentra bien escrito, faltaron componente por evaluar..."); } } catch (Exception ex) { LlenarTablas(); MessageBox.Show(ex.Message); } }
//------------------------------------------------------Guardar Como HTML----------------------------------- private void button6_MouseClick(object sender, MouseEventArgs e) { estado = 0; posicion = 0; lexema = ""; lista_lexema = new ArrayList(); lista_token = new ArrayList(); lista_errores = new ArrayList(); fila = 1; columna = 0; cadena = Cuerpo.Text; AnalizadorLexico(); generarTablas(); AnalizadorSintactico analizar_sintactico = new AnalizadorSintactico(lista_lexema, lista_token, lista_errores); // GenerarHtml generarhtml = new GenerarHtml(lista_lexema, lista_token, 1); }
private void cargarInfoConsola_Click_1(object sender, EventArgs e) { String[] lineasEntradas = entradaDatosConsola.Lines; salidaDatos.Lines = lineasEntradas; Resetear(); for (int i = 0; i < lineasEntradas.Length; i++) { Cache.obtenerCache().AgregarLinea(lineasEntradas[i]); } try { //AnalizadorLexico analizador = new AnalizadorLexico(); AnalizadorSintactico AnaSin = new AnalizadorSintactico(); ComponenteLexico componente = AnaSin.Analizar(depurar, opcion); //while (!componente.ObtenerCategoria().Equals(Categoria.FIN_DE_ARCHIVO)) //{ // //MessageBox.Show(componente.ToString()); // componente = analizador.Analizador(opcion); //} LlenarTablas(); if (ManejadorErrores.HayErrores()) { MessageBox.Show("Hay problemas de compilacion. Revise la información de los errores encontrados..."); } else if (Categoria.FIN_DE_ARCHIVO.Equals(componente.ObtenerCategoria())) { MessageBox.Show("El programa se encuentra bien escrito"); } else { MessageBox.Show("Aunque el programa se encuentra bien escrito, faltaron componente por evaluar..."); } } catch (Exception ex) { LlenarTablas(); MessageBox.Show(ex.Message); } }
public Compilador(bool modo, string dirTemp, string dirEjec, string nombre) { modoDebug = modo; //this.ArchivoGramatica = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, System.Configuration.ConfigurationManager.AppSettings["archGramatica"].ToString()); DirectorioTemporales = dirTemp; DirectorioEjecutables = dirEjec; NombreEjecutable = nombre; DirectoriosManager.CrearDirectorioSiNoExiste(DirectorioTemporales, false); DirectoriosManager.CrearDirectorioSiNoExiste(DirectorioEjecutables, false); GeneracionCodigoHelpers.DirectorioTemporales = dirTemp; analizadorSintactico = new AnalizadorSintactico(GlobalesCompilador.NOMBRE_ARCH_GRAMATICA); analizadorSintactico.HabilitarSemantico = true; analizadorSintactico.ModoDebug = modoDebug; DescomprimirCompiladorPascal(); }
public async Task <string> Compilar() { await Task.Yield(); this.ResultadosCompilacion.Clear(); //try //{ //Fase 1 Analisis Lexico Analizador analizador = new AnalizadorLexico(this.Document, this.ResultadosCompilacion); analizador.Analizar(); if (analizador.EsValido) { //Fase 2 Analisis Sintactico analizador = new AnalizadorSintactico((AnalizadorLexico)analizador, this.Document, this.ResultadosCompilacion); analizador.Analizar(); if (analizador.EsValido) { // //Fase 4 Sintetizador analizador = new Sintesis((AnalizadorSintactico)analizador, this.Document, this.ResultadosCompilacion); analizador.Analizar(); if (analizador.EsValido) { CodigoMaquina maquina = new CodigoMaquina((Sintesis)analizador); maquina.Generar(); this.CodigoMaquina = maquina.Codigo; this.Compilado = true; this.CodeSegment = maquina.CodeSegment; return("Compilación exitosa"); } } } this.Compilado = false; return("Se encontrarón errores previos a la compilación\n"); }
private void mostrarArbolDeDerivacionToolStripMenuItem_Click(object sender, EventArgs e) { sintactico = new AnalizadorSintactico(analizador.lst_tokens, analizador.lst_errores); sintactico.parser(); sintactico.imprirarbol(); }
private void analizador_sintactico() { sintactico = new AnalizadorSintactico(analizador.lst_tokens, analizador.lst_errores); sintactico.parser(); }
// ruta para ficheros internos static void Main(string[] args) { //Console.WriteLine("Hola usuario que tal estas? "); //Console.WriteLine(args.Length); GestorDeErrores gestorDeErrores = new GestorDeErrores(); GestorTS gestorTs = new GestorTS(); string pathSourceCode = @".." + Path.DirectorySeparatorChar + "../Codigos_de_Prueba/prueba0.txt"; if (args.Length >= 1) { //Console.WriteLine(args[0]); pathSourceCode = (File.Exists(args[0]) ? args[0] : @".." + Path.DirectorySeparatorChar + "../Codigos_de_Prueba/prueba0.txt"); if (!File.Exists(args[0])) { Console.WriteLine("El fichero no existe."); } //Console.WriteLine(File.Exists(args[0]) ? "File exists." : "File does not exist."); } string pathAstTablaAccion = @".." + Path.DirectorySeparatorChar + ".." + Path.DirectorySeparatorChar + "Ficheros_Del_Traductor" + Path.DirectorySeparatorChar + "Sintactico" + Path.DirectorySeparatorChar + "TablaACCION.csv"; string pathAstTablaGoto = @".." + Path.DirectorySeparatorChar + ".." + Path.DirectorySeparatorChar + "Ficheros_Del_Traductor" + Path.DirectorySeparatorChar + "Sintactico" + Path.DirectorySeparatorChar + "TablaGOTO.csv"; string pathReglas = @".." + Path.DirectorySeparatorChar + ".." + Path.DirectorySeparatorChar + "Ficheros_Del_Traductor" + Path.DirectorySeparatorChar + "Sintactico" + Path.DirectorySeparatorChar + "Reglas.txt"; AnalisisLexico alex = new AnalisisLexico(pathSourceCode, gestorTs, gestorDeErrores); gestorDeErrores.SetAnalizadorLexico(alex); // LLamar An. SINTÁCTICO AnalizadorSintactico ast = new AnalizadorSintactico(alex, gestorTs, pathAstTablaAccion, pathAstTablaGoto, pathReglas, gestorDeErrores); string parse = ast.GetParse(); string listaTokens = ast.GetFichTokens(); string tablaSimbolos = gestorTs.getFichTS(); string codigoEnsamblador = ast.CodigoEnsamblador; // Ficheros donde guardamos el resultado. string pathParse = "../../Resultados/parse.txt"; string pathTokens = "../../Resultados/tokens.txt"; string pathTablaSimbolos = @"../../Resultados/TS.txt"; string pathObjectCode = @"../../Resultados/a.ens"; // ESCRIBIR FICHERO PARSE. System.IO.File.Delete(pathParse); using (System.IO.StreamWriter fichParse = new System.IO.StreamWriter(pathParse, true)) { fichParse.Write(parse); } // ESCRIBIR FICHERO TOKENS System.IO.File.Delete(pathTokens); using (System.IO.StreamWriter fichTokens = new System.IO.StreamWriter(pathTokens, true)) { fichTokens.Write(listaTokens); } // ESCRIBIR FICHERO TABLA SIMBOLOS System.IO.File.Delete(pathTablaSimbolos); using (System.IO.StreamWriter fichTS = new System.IO.StreamWriter(pathTablaSimbolos, true)) { fichTS.WriteLine(tablaSimbolos); } // ESCRIBIR CODIGO ENSAMBLADOR System.IO.File.Delete(pathObjectCode); using (System.IO.StreamWriter fichENS = new System.IO.StreamWriter(pathObjectCode, true)) { fichENS.WriteLine(codigoEnsamblador); } // TODO Verificar que SO estamos usando. Para monstrar interfaz si windows. NO TIENE UTILIDAD de momento. var os = Environment.OSVersion; //Console.WriteLine("SO: "+os.Platform); }
public Sintesis(AnalizadorSintactico Semantico, TextDocument Documento, ResultadosCompilacion Errores) : base(Documento, Errores) { this.CodeSegment = Semantico.CodeSegment; }