Esempio n. 1
0
        private void btnleertodo_Click(object sender, EventArgs e)
        {
            Stopwatch st = new Stopwatch();

            st.Start();
            try {
                Depurar();
                //Analizador Lexico
                List <string> TokensEntrada = MetodosAL.AnalizadorLexico(rtxtentrada.Text);
                foreach (string s in TokensEntrada)
                {
                    rtxtcodigointermedio.Text += s;
                }


                //Analizador Sintactico
                //string strTokens = TrasformarAIden(rtxtcodigointermedio.Text);
                //rtxtIDEN.Text = strTokens;
                //AnalizadorSintactico();
                List <string> LineasSintactico = MetodosAS.AnalizadorSintactico(TokensEntrada);
                foreach (string cx in LineasSintactico)
                {
                    rtxtSalida.Text = cx;
                }


                //Analizar Semantico

                List <string> SemanticaIntermedia = MetodosASe.PrimeraPasada(TokensEntrada);
                foreach (string linea in SemanticaIntermedia)
                {
                    rchtxtSementica.Text += linea;
                }
                MostrarIdentificadoresConstantes();
                List <string> LineasSemanticas = MetodosASe.SegundaPasada(SemanticaIntermedia);
                foreach (string linea in LineasSemanticas)
                {
                    rchtxtSementica.Text += linea;
                }


                linea = 1;
                st.Stop();
                MessageBox.Show(st.Elapsed.ToString());
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + linea + ".\nVerifique el uso apropiado del léxico.", "Error de analizador léxico", MessageBoxButtons.OK, MessageBoxIcon.Error);
                linea = 1;
            }
        }
Esempio n. 2
0
        void CambiarEstado(char c, ref bool bandera, ref List <string> tokens)
        {
            txtEstadoAnt.Text    = intEstadoActual.ToString();
            intEstadoActual      = MetodosAL.NuevoEstado(' ', intEstadoActual, ref bandera);
            txtEstadoActual.Text = intEstadoActual.ToString();
            string tokn = MetodosAL.ObtenerToken(intEstadoActual, caracteres);

            tokens.Add(tokn);
            txttoken.Text = tokn;
            foreach (string tkn in tokens)
            {
                txtcadenatokens.Text += tkn + " ";                            //Muestro la cadena de tokens
            }
            rtxtcodigointermedio.Text += txtcadenatokens.Text + "\n";
            txtcadenatokens.Text       = "";
            caracteres.Clear();
            intEstadoActual = 0;
        }
Esempio n. 3
0
 private void btnCaracterXCaracter_Click(object sender, EventArgs e)
 {
     try
     {
         string strEntrada = rtxtentrada.Text;
         if (indx == 0)
         {
             Depurar();
             rtxtcodigointermedio.Text = "";
         }
         strEntrada = strEntrada.Replace('\n', ' ');
         string[] strPalabras = strEntrada.Split(' ');
         strEntrada = rtxtentrada.Text;
         List <string> tokens = new List <string>();
         txtSubcadena.Text = strPalabras[palabra];//Mostrar la subcadena actual
         string palabraActual = strPalabras[palabra];
         bool   bandera       = false;
         if (strEntrada.Length > indx)
         {
             char c = strEntrada[indx];
             caracteres.Add(c);
             if (c != '\n')
             {
                 txtEstadoAnt.Text  = intEstadoActual.ToString();
                 txtCaracter.Text   = c.ToString();
                 txtnumrenglon.Text = linea.ToString();
                 intEstadoActual    = MetodosAL.NuevoEstado(c, intEstadoActual, ref bandera);
                 if (bandera)
                 {
                     string tokn = MetodosAL.ObtenerToken(intEstadoActual, caracteres);
                     tokens.Add(tokn);
                     txttoken.Text = tokn;
                     foreach (string tkn in tokens)
                     {
                         txtcadenatokens.Text += tkn + " ";                            //Muestro la cadena de tokens
                     }
                     intEstadoActual = 0;
                     palabra++; //Avanzo a la siguiente palabra
                     bandera = false;
                     caracteres.Clear();
                 }
                 txtEstadoActual.Text = intEstadoActual.ToString();
             }
             else
             {
                 linea++;
                 CambiarEstado(' ', ref bandera, ref tokens);
                 palabra++;
             }
             indx++;
         }
         else
         {
             CambiarEstado(' ', ref bandera, ref tokens);
             indx    = 0;
             palabra = 0;
             linea   = 1;
         }
         MostrarIdentificadoresConstantes();
     }
     catch (Exception ex)
     {
         MessageBox.Show(ex.Message + linea + ".\nVerifique el uso apropiado del léxico, y el caracter actual.", "Error de analizador léxico", MessageBoxButtons.OK, MessageBoxIcon.Error);
     }
 }