Example #1
0
    public static void Main(string[] args)
    {
        AnalizadorSintactico syntax = new AnalizadorSintactico(args[0]);

        syntax.parse();
        syntax.print();
    }
Example #2
0
        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();
            }
        }
Example #3
0
        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);
            }
        }
Example #4
0
        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);
            }
        }
Example #5
0
 //------------------------------------------------------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);
 }
Example #6
0
        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);
            }
        }
Example #7
0
        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();
        }
Example #8
0
        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");
        }
Example #9
0
 private void mostrarArbolDeDerivacionToolStripMenuItem_Click(object sender, EventArgs e)
 {
     sintactico = new AnalizadorSintactico(analizador.lst_tokens, analizador.lst_errores);
     sintactico.parser();
     sintactico.imprirarbol();
 }
Example #10
0
 private void analizador_sintactico()
 {
     sintactico = new AnalizadorSintactico(analizador.lst_tokens, analizador.lst_errores);
     sintactico.parser();
 }
Example #11
0
        // 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);
        }
Example #12
0
 public Sintesis(AnalizadorSintactico Semantico, TextDocument Documento, ResultadosCompilacion Errores) : base(Documento, Errores)
 {
     this.CodeSegment = Semantico.CodeSegment;
 }