예제 #1
0
파일: frmEditor.cs 프로젝트: Julianrt/compi
        private void tsrEjecutarAnalizadorLexico_Click(object sender, EventArgs e)
        {
            string nombreTabpageseleccionada = tabControl1.SelectedTab.Name.ToString();
            string indiceparacontroleditort  = nombreTabpageseleccionada.Substring(nombreTabpageseleccionada.Length - 1, 1);

            var controles = tabControl1.Controls.OfType <TabPage>().Where(x => x.Name.StartsWith(nombreTabpageseleccionada));



            foreach (var ctrl in controles)
            {
                var controleseditor = ctrl.Controls.OfType <EditorTexto>().Where(x => x.Name.StartsWith("editorTexto" + indiceparacontroleditort));

                foreach (var ctrleditor in controleseditor)
                {
                    string codigofuente = ctrleditor.Texto();
                    Lexico _lex         = new Lexico();
                    if (codigofuente.Length > 0)
                    {
                        dgvListaTokens.DataSource = _lex.EjecutarLexico(codigofuente);
                    }
                    else
                    {
                        MessageBox.Show("Escribe algo primero :v");
                    }
                }
            }
        }
예제 #2
0
        private void tsrEjecutarAnalizadorSintactico_Click(object sender, EventArgs e)
        {
            string nombreTabpageseleccionada = tabControl1.SelectedTab.Name.ToString();
            string indiceparacontroleditort  = nombreTabpageseleccionada.Substring(nombreTabpageseleccionada.Length - 1, 1);

            var controles = tabControl1.Controls.OfType <TabPage>().Where(x => x.Name.StartsWith(nombreTabpageseleccionada));

            foreach (var ctrl in controles)
            {
                var controleseditor = ctrl.Controls.OfType <EditorTexto>().Where(x => x.Name.StartsWith("editorTexto" + indiceparacontroleditort));

                foreach (var ctrleditor in controleseditor)
                {
                    string     codigofuente = ctrleditor.Texto();
                    Lexico     _lex         = new Lexico();
                    Sintactico _sin         = new Sintactico();
                    if (codigofuente.Length > 0)
                    {
                        List <Token> lista = new List <Token>();
                        lista = _lex.EjecutarLexico(codigofuente);
                        int[]     Tokensparasintactico = new int[500];
                        string [] lexemaParaSintactico = new string[500];
                        int       cantidaddetokens = 0, ubicacion = 0;
                        for (int i = 0; i < lista.Count; i++)
                        {
                            if (lista[i].token != -41 && lista[i].token != -39)
                            {
                                Tokensparasintactico[ubicacion] = lista[i].token;
                                lexemaParaSintactico[ubicacion] = lista[i].lexema;
                                cantidaddetokens++;
                                ubicacion++;
                            }
                        }
                        Tokensparasintactico[cantidaddetokens] = -99;
                        //MessageBox.Show(Convert.ToString(Tokensparasintactico[0])+" "+ Convert.ToString(Tokensparasintactico[1]));

                        _sin.EjecutarSintactico(Tokensparasintactico, lexemaParaSintactico);
                    }
                    else
                    {
                        MessageBox.Show("Escribe algo primero :v");
                    }
                }
            }
        }
예제 #3
0
파일: frmEditor.cs 프로젝트: Julianrt/compi
        private void tsrEjecutarAnalizadorSintactico_Click(object sender, EventArgs e)
        {
            string nombreTabpageseleccionada = tabControl1.SelectedTab.Name.ToString();
            string indiceparacontroleditort  = nombreTabpageseleccionada.Substring(nombreTabpageseleccionada.Length - 1, 1);

            var controles = tabControl1.Controls.OfType <TabPage>().Where(x => x.Name.StartsWith(nombreTabpageseleccionada));

            foreach (var ctrl in controles)
            {
                var controleseditor = ctrl.Controls.OfType <EditorTexto>().Where(x => x.Name.StartsWith("editorTexto" + indiceparacontroleditort));

                foreach (var ctrleditor in controleseditor)
                {
                    string     codigofuente = ctrleditor.Texto();
                    Lexico     _lex         = new Lexico();
                    Sintactico _sin         = new Sintactico();
                    if (codigofuente.Length > 0)
                    {
                        List <Token> lista             = new List <Token>();
                        List <Token> listaTablaSimbolo = new List <Token>();
                        //var ObjArbol = new Arboles(MiLi)
                        lista = _lex.EjecutarLexico(codigofuente);
                        int[]    Tokensparasintactico = new int[500];
                        string[] lexemaParaSintactico = new string[500];
                        int      cantidaddetokens = 0, ubicacion = 0;
                        for (int i = 0; i < lista.Count; i++)
                        {
                            if (lista[i].token != -41 && lista[i].token != -39)
                            {
                                Tokensparasintactico[ubicacion] = lista[i].token;
                                lexemaParaSintactico[ubicacion] = lista[i].lexema;
                                listaTablaSimbolo.Add(lista[i]);
                                cantidaddetokens++;
                                ubicacion++;
                            }
                        }
                        Tokensparasintactico[cantidaddetokens] = -99;
                        //MessageBox.Show(Convert.ToString(Tokensparasintactico[0])+" "+ Convert.ToString(Tokensparasintactico[1]));

                        TablaSimbolos.ListaErroresSemanticos = new List <ErrorSemanticoDGV>();
                        TablaSimbolos.TablaSimbolosClase     = new Dictionary <string, NodoClase>();
                        _sin.EjecutarSintactico(Tokensparasintactico, lexemaParaSintactico, listaTablaSimbolo);

                        dgvErrores.DataSource = null;
                        dgvErrores.Rows.Clear();

                        dgvTablaSimbolo.DataSource = null;
                        dgvTablaSimbolo.Rows.Clear();

                        Arboles arbolSintactico = new Arboles(listaTablaSimbolo);
                        arbolSintactico.CrearArbolSintacticoAbstracto();

                        if (TablaSimbolos.ListaErroresSemanticos.Count > 0)
                        {
                            dgvErrores.DataSource = TablaSimbolos.ListaErroresSemanticos;
                        }
                        else
                        {
                            dgvTablaSimbolo.DataSource = TablaSimbolos.ObtenerListaClases();
                        }
                    }
                    else
                    {
                        dgvTablaSimbolo.DataSource = "";
                        MessageBox.Show("Escribe algo primero :v");
                    }
                }
            }
        }