コード例 #1
0
 private void SegundoAvanzar(List <Token> tokens)
 {
     try
     {
         errores.Add(new ErrorSintactico(lexemaActual.getFila(), pila.RecuperarUltimoElemento()));
         produccionActual = Produccion.INICIAL;
         vuelta++;
         Avanzar(tokens);
     }
     catch
     {
         SegundoAvanzar(tokens);
     }
 }
コード例 #2
0
        private void SolicitarProduccion()
        {
            if (lexemaActual != null)
            {
                Console.WriteLine("SOLICITANDO PRODUCCION");

                produccionActual = pila.RecuperarUltimoElemento();
                Console.WriteLine("PRODUCCION ACTUAL: " + produccionActual);
                Console.WriteLine("LEXEMA ACTUAL: " + lexemaActual.getTipo());
                produccion = tablaAnalisisSintactico.recuperarProduccion(produccionActual, lexemaActual);

                //ANTES ELIMINAMOS LA PRODUCCION ANCTUAL PARA REALIZAR EL SHIFT
                //pila.EliminarUltimoElemento();

                AgregarProduccionPila(produccion);

                VerificarAnulabilidad();
            }
        }