private void CargarInicial()
        {
            var usuarioInfo = ObtenerUsuarioInfo();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            var listaAlmacen = new Negocio.Almacen().Listar(0);

            LlenarCombo(ddlAlmacen, listaAlmacen, "AlmacenId", "Nombre");
            ddlAlmacen.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            LlenarCombo(ddlAlmacenOrigen, listaAlmacen, "AlmacenId", "Nombre");

            LlenarCombo(ddlAlmacenDestino, listaAlmacen, "AlmacenId", "Nombre");
            ddlAlmacenDestino.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            var listaUsuario = new Negocio.Usuario().Listar(0, "", "", "", Constantes.PerfilAdministrador, 0);

            foreach (var usuario in listaUsuario)
            {
                ddlResponsable.Items.Add(new ListItem(usuario.Nombres + "," + usuario.ApellidoPaterno + " " + usuario.ApellidoMaterno, usuario.UsuarioId.ToString()));
            }
            ddlResponsable.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
        }
        private void CargarInicial()
        {
            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";
        }
        public async Task <ActionResult <Response> > PostTabla([FromBody] TablaMaestra tablaMaestra)
        {
            Response response = new Response();
            object   rpta     = new object();

            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                rpta = await _tablamaestralogic.PostTabla(tablaMaestra);

                if (rpta == null)
                {
                    return(NotFound());
                }
            }
            catch (Exception e)
            {
                response.Status  = Constant.Error500;
                response.Message = e.Message;
                return(Ok(response));
            }
            return(Ok(rpta));
        }
示例#4
0
        private void CargarInicial()
        {
            var usuarioInfo = ObtenerUsuarioInfo();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTipoDocumento).Where(x => x.Activo.Equals(1)).ToList();
            LlenarCombo(ddlTipoDocumento, tablaMaestraInfo, "Codigo", "NombreLargo");
            //ddlTipoDocumento.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
            ddlTipoDocumento.SelectedValue = Constantes.TipoDocumentoRuc.ToString();
            // ddlTipoDocumento.Enabled = false;

            var paisInfo = new Pais().Listar(0).ToList();

            LlenarCombo(ddlPais, paisInfo, "PaisId", "Descripcion");
            ddlPais.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
            //var opcionInfo = new Opcion().ListarOpciones(usuarioInfo.EmpresaId).Where(o=>o.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlOpcionInicio, opcionInfo, "OpcionId", "Url");

            var ubigeoInfo = new Ubigeo().Listar(0, 0, Constantes.TipoUbigeoDepartamento);

            LlenarCombo(ddlDepartamento, ubigeoInfo, "UbigeoId", "Nombre");
            ddlDepartamento.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //ubigeoInfo = new Ubigeo().Listar(0, clienteInfo.UbigeoDepartamentoId, Constantes.TipoUbigeoProvincia);
        }
示例#5
0
        private void CargarInicial(int empresaId, int clienteId)
        {
            var scriptCargaInicial = new StringBuilder("");
            var usuarioInfo        = ObtenerUsuarioInfo();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            if (empresaId > 0)
            {
                var empresaInfo = new Negocio.Empresa().Listar(empresaId);
                LlenarCombo(ddlEmpresa, empresaInfo, "EmpresaId", "RazonSocial");
                ddlEmpresa.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
                ddlEmpresa.SelectedValue = empresaId.ToString();
                scriptCargaInicial.Append("document.getElementById('" + ddlEmpresa.ClientID + "').value = " + empresaId + ";");
                scriptCargaInicial.Append("document.getElementById('trCliente').style.display = 'none';");
            }
            else
            {
                if (clienteId > 0)
                {
                    var clienteInfo = new Negocio.Cliente().Listar(clienteId);
                    LlenarCombo(ddlCliente, clienteInfo, "ClienteId", "Cliente");
                    ddlCliente.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
                    ddlCliente.SelectedValue = clienteId.ToString();
                    scriptCargaInicial.Append("document.getElementById('" + ddlCliente.ClientID + "').value = " + clienteId + ";");
                    scriptCargaInicial.Append("document.getElementById('trEmpresa').style.display = 'none';");
                }
                else
                {
                    var empresaInfo = new Negocio.Empresa().Listar(0);
                    LlenarCombo(ddlEmpresa, empresaInfo, "EmpresaId", "RazonSocial");
                    ddlEmpresa.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

                    var clienteInfo = new Negocio.Cliente().Listar(0).Where(c => c.TipoPersonaId.Equals(Constantes.TipoPersonaJuridica)).ToList();
                    LlenarCombo(ddlCliente, clienteInfo, "ClienteId", "Cliente");
                    ddlCliente.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
                }
            }

            var paisInfo = new Pais().Listar(0).ToList();

            LlenarCombo(ddlPais, paisInfo, "PaisId", "Descripcion");
            ddlPais.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            var ubigeoInfo = new Ubigeo().Listar(0, 0, Constantes.TipoUbigeoDepartamento);

            LlenarCombo(ddlDepartamento, ubigeoInfo, "UbigeoId", "Nombre");
            ddlDepartamento.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            RegistrarScript(scriptCargaInicial.ToString(), "CargaInicial");
        }
示例#6
0
        private void CargarDatos(int tablaId)
        {
            var script = new StringBuilder("");

            grvTablaMaestra.DataBind();
            //int numeroRegistros = Convert.ToInt16(ddlNumeroRegistros.SelectedValue);
            int numeroRegistros = 1000000;
            int numeroPagina    = Convert.ToInt16(ViewState["PageIndex"]);

            int indicePagina = numeroPagina == 0 ? 0 : numeroPagina - 1;

            pageIndex = indicePagina + 1;

            var tablaMaestraInfoLista = new TablaMaestra().ListarPaginado(0, tablaId, numeroRegistros, indicePagina).ToList();

            grvTablaMaestra.DataSource = tablaMaestraInfoLista;
            grvTablaMaestra.DataBind();

            if (tablaMaestraInfoLista.Count > 0)
            {
                grvTablaMaestra.HeaderRow.Attributes["style"] = "display: none";
                grvTablaMaestra.UseAccessibleHeader           = true;
                grvTablaMaestra.HeaderRow.TableSection        = TableRowSection.TableHeader;
            }
            rowCount  = tablaMaestraInfoLista.Count > 0 ? tablaMaestraInfoLista.First().TotalFilas : 0;
            pageCount = CalcPageCount(rowCount);
            ViewState["PageCount"] = pageCount;

            #region Texto del Pie de Página
            if (tablaMaestraInfoLista.Count > 0)
            {
                if (numeroRegistros == 0)
                {
                    lblPaginacion.Text = "Página " + pageIndex.ToString("") + " de 1, con un Total de " + rowCount.ToString("") + " registros";
                    script.Append("document.getElementById('lblPaginacion').innerText = '");
                    script.Append("Página " + pageIndex.ToString("") + " de 1, con un Total de " + rowCount.ToString("") + " registros';");
                }
                else
                {
                    lblPaginacion.Text = "Página " + pageIndex.ToString("") + " de " + pageCount.ToString("") + ", con un Total de " + rowCount.ToString("") + " registros";
                    script.Append("document.getElementById('lblPaginacion').innerText = '");
                    script.Append("Página " + pageIndex.ToString("") + " de " + pageCount.ToString("") + ", con un Total de " + rowCount.ToString("") + " registros';");
                }
            }
            else
            {
                lblPaginacion.Text = "No se obtuvieron resultados";
                script.Append("document.getElementById('lblPaginacion').innerText = 'No se obtuvieron resultados';");
            }
            #endregion

            RefreshPageButtons();
            RegistrarScript(script.ToString(), "Paginacion");
        }
示例#7
0
        private void CargarInicial()
        {
            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            var listaTipoProducto = new Negocio.TipoProducto().Listar(0, 0, Constantes.PrimerNivelProducto).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlTipoProducto, listaTipoProducto, "TipoProductoId", "Nombre");
            ddlTipoProducto.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
        }
示例#8
0
        private void CargarInicial()
        {
            var usuarioInfo = ObtenerUsuarioInfo();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            tablaMaestraInfo = new Negocio.TablaMaestra().Listar(0, 0).Where(t => t.Codigo.Equals("0")).ToList();
            LlenarCombo(ddlTablaMaestra, tablaMaestraInfo, "TablaId", "NombreLargo");
        }
        private void CargarInicial()
        {
            var usuarioInfo = ObtenerUsuarioInfo();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTipoCotizacion).Where(x => x.Activo.Equals(1)).ToList();
            LlenarCombo(ddlTipoCotizacion, tablaMaestraInfo, "Codigo", "NombreCorto");
            ddlTipoCotizacion.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
        }
示例#10
0
 private void Resetear()
 {
     Cache.obtenerCache().Limpiar();
     ManejadorErrores.Limpiar();
     TablaMaestra.Limpiar();
     dataDummys.Rows.Clear();
     dataSimbolos.Rows.Clear();
     dataLiterales.Rows.Clear();
     dataPalabraReservada.Rows.Clear();
     dataErroresLexicos.Rows.Clear();
     dataErroresSeman.Rows.Clear();
     dataErroresSintac.Rows.Clear();
 }
示例#11
0
        private void CargarInicial()
        {
            var usuarioInfo = ObtenerUsuarioInfo();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            var listaAlmacen = new Negocio.Almacen().Listar(0);

            LlenarCombo(ddlAlmacen, listaAlmacen, "AlmacenId", "Nombre");
            ddlAlmacen.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
        }
        public static List <TablaMaestraInfo> ObtenerMotivoIngreso(string tipoComprobante)
        {
            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaMotivoIngresoCompra).Where(x => x.Activo.Equals(1)).ToList();

            if (tipoComprobante.Equals("01") || tipoComprobante.Equals("09"))
            {
                tablaMaestraInfo = tablaMaestraInfo.Where(x => x.Codigo == Constantes.MotivoIngresoCompraPorVenta.ToString()).ToList();
            }
            else
            {
                tablaMaestraInfo = tablaMaestraInfo.Where(x => x.Codigo != Constantes.MotivoIngresoCompraPorVenta.ToString()).ToList();
            }
            return(tablaMaestraInfo);
        }
示例#13
0
        private void CargarInicial()
        {
            var usuarioInfo = ObtenerUsuarioInfo();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTipoComprobante).Where(x => x.Activo.Equals(1)).ToList();
            LlenarCombo(ddlTipoComprobante, tablaMaestraInfo, "Codigo", "NombreLargo");

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaSerie).Where(x => x.Activo.Equals(1)).ToList();
            LlenarCombo(ddlSerie, tablaMaestraInfo, "Codigo", "NombreCorto");
        }
示例#14
0
        private void CargarInicial()
        {
            var usuarioInfo = ObtenerUsuarioInfo();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            var opcionInfo = new Opcion().ListarOpciones(usuarioInfo.PerfilId).Where(o => o.Activo.Equals(1)).ToList();

            LlenarCombo(ddlOpcionInicio, opcionInfo, "OpcionId", "Url");
            // ddlOpcionInicio

            #region Información Personal
            //tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaSexo).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlSexo, tablaMaestraInfo, "Codigo", "NombreLargo");
            //ddlSexo.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaEstadoCivil).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlEstadoCivil, tablaMaestraInfo, "Codigo", "NombreLargo");
            //ddlEstadoCivil.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTipoDocumento).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlTipoDocumento, tablaMaestraInfo, "Codigo", "NombreLargo");
            //ddlTipoDocumento.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
            //#endregion

            //#region Configuración
            //var perfilInfo = new Perfil().Listar(0).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlPerfil, perfilInfo, "PerfilId", "Perfil");
            //ddlPerfil.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaCargo).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlCargo, tablaMaestraInfo, "Codigo", "NombreLargo");
            //ddlCargo.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //var empresaInfo = new Empresa().Listar(0).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlEmpresa, empresaInfo, "EmpresaId", "RazonSocial");
            //ddlEmpresa.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //var departamentoInfo = new Departamento().Listar(0).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlDepartamento, departamentoInfo, "DepartamentoId", "Nombre");
            //ddlDepartamento.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
            #endregion
        }
示例#15
0
        private void CargarInicial()
        {
            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            #region Información Personal
            //var listaEmpresa = new Negocio.Empresa().Listar(0);
            //LlenarCombo(ddlEmpresa, listaEmpresa, "EmpresaId", "RazonSocial");
            //ddlEmpresa.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
            //tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTipoPersona).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlTipoPersona, tablaMaestraInfo, "Codigo", "NombreLargo");
            //ddlTipoPersona.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaEstadoCivil).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlEstadoCivil, tablaMaestraInfo, "Codigo", "NombreLargo");
            //ddlEstadoCivil.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTipoDocumento).Where(x => x.Activo.Equals(1) && x.Codigo.Equals("6")).ToList();
            LlenarCombo(ddlTipoDocumento, tablaMaestraInfo, "Codigo", "NombreLargo");
            // ddlTipoDocumento.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
            #endregion

            #region Configuración
            var paisInfo = new Pais().Listar(0).ToList();
            LlenarCombo(ddlPais, paisInfo, "PaisId", "Descripcion");
            ddlPais.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
            //var perfilInfo = new Negocio.Perfil().Listar(0).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlPerfil, perfilInfo, "PerfilId", "Perfil");
            //ddlPerfil.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaCargo).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlCargo, tablaMaestraInfo, "Codigo", "NombreLargo");
            //ddlCargo.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //var empresaInfo = new Negocio.Empresa().Listar(0).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlEmpresa, empresaInfo, "EmpresaId", "RazonSocial");
            //ddlEmpresa.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            var ubigeoInfo = new Ubigeo().Listar(0, 0, Constantes.TipoUbigeoDepartamento);
            LlenarCombo(ddlDepartamento, ubigeoInfo, "UbigeoId", "Nombre");
            ddlDepartamento.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
            #endregion
        }
        public async Task <ResponseSql> PostTabla(TablaMaestra tablaMaestra)
        {
            var parameters = new DynamicParameters();

            parameters.Add("@ACCION", tablaMaestra.ACCION);
            parameters.Add("@IDDETALLE", tablaMaestra.IDDETALLE);
            parameters.Add("@IDTABLA", tablaMaestra.IDTABLA);
            parameters.Add("@SDETALLE", tablaMaestra.SDETALLE);
            parameters.Add("@FILLER1", tablaMaestra.FILLER1);
            parameters.Add("@FILLER2", tablaMaestra.FILLER2);
            parameters.Add("@FILLER3", tablaMaestra.FILLER3);
            parameters.Add("@IDPADRE", tablaMaestra.IDPADRE);

            using (var connection = new SqlConnection(_connectionString))
            {
                return(await connection.QueryFirstAsync <ResponseSql>("[dbo].[SPE_UDP_TABLA_DETALLE]", parameters, commandType : System.Data.CommandType.StoredProcedure));
            }
        }
        public ComponenteLexico Analizar()
        {
            Resetear();
            while (ContinuarAnalisis)
            {
                if (EstadorActual == 0)
                {
                    EstadoCero();
                }
                else if (EstadorActual == 1)
                {
                    EstadoUno();
                }
                else if (EstadorActual == 2)
                {
                    EstadoDos();
                }
                else if (EstadorActual == 3)
                {
                    EstadoTres();
                }
                else if (EstadorActual == 14)
                {
                    EstadoCatorce();
                }
                else if (EstadorActual == 15)
                {
                    EstadoQuince();
                }
                else if (EstadorActual == 16)
                {
                    //implementar Estado 16
                }
                else if (EstadorActual == 17)
                {
                    EstadoDiecisiete();
                }
            }

            //Colocar el componente en la tabla de simbolos

            return(TablaMaestra.SincronizarTabla(Componente));
        }
        public ComponenteLexico Analizar()
        {
            ComponenteLexico componenteLexico = new ComponenteLexico();

            LimpiarLexema();
            int  estadoActual      = 0;
            bool continuarAnalisis = true;

            while (continuarAnalisis)
            {
            }
            if (componenteLexico.Equals("@EOF@"))
            {
                //TablaMaestra.ObtenerTablaMaestra().Sincronizar(componente);
                TablaMaestra.SincronizarSimbolo(componenteLexico);
            }

            return(componenteLexico);
        }
示例#19
0
        public async Task <object> PostTabla(TablaMaestra tablaMaestra)
        {
            Response    response    = new Response();
            ResponseSql responsesql = new ResponseSql();

            try
            {
                responsesql = await _unitOfWork.TablaMaestra.PostTabla(tablaMaestra);

                response.Status  = responsesql.ID_ERR == 0 ? Constant.Status : responsesql.ID_ERR;
                response.Message = responsesql.DESCR_ERR;
                response.Data    = responsesql.IDDATO;
            }
            catch (Exception e)
            {
                response.Status  = Constant.Error500;
                response.Message = e.Message;
            }
            return(response);
        }
        private void CargarInicial()
        {
            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaUnidades).Where(x => x.Activo.Equals(1)).ToList();
            LlenarCombo(ddlUnidadMedida, tablaMaestraInfo, "Codigo", "NombreCorto");
            ddlUnidadMedida.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTipoNegocio).Where(x => x.Activo.Equals(1)).ToList();
            LlenarLista(lstTipoNegocio, tablaMaestraInfo, "Codigo", "NombreCorto");
            ddlUnidadMedida.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            #region Datos Principales
            var tipoProducto = new TipoProducto().Listar(0, 0, Constantes.PrimerNivelProducto).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlTipoProducto, tipoProducto, "TipoProductoId", "Nombre");
            ddlTipoProducto.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            ddlSubTipoProducto.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
            #endregion
        }
示例#21
0
        private void CargarInicial()
        {
            var usuarioInfo = ObtenerUsuarioInfo();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTamanioPagina).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlNumeroRegistros, tablaMaestraInfo, "NombreCorto", "NombreLargo");
            ddlNumeroRegistros.SelectedValue = "5";

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTipoComprobante).Where(x => x.Activo.Equals(1)).ToList();
            LlenarCombo(ddlTipoComprobante, tablaMaestraInfo, "Codigo", "NombreLargo");

            LlenarCombo(ddlTipoComprobanteBuscar, tablaMaestraInfo, "Codigo", "NombreLargo");
            ddlTipoComprobanteBuscar.Items.Insert(0, new ListItem("Todos", String.Empty));

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaMoneda).Where(x => x.Activo.Equals(1)).ToList();
            LlenarCombo(ddlMonedaBuscar, tablaMaestraInfo, "Codigo", "NombreLargo");
            ddlMonedaBuscar.Items.Insert(0, new ListItem("Todos", "0"));

            var fechaHoy = DateTime.Now;

            txtFechaEmisionInicioBuscar.Text = "01/" + fechaHoy.Month.ToString().PadLeft(2, '0') + "/" + fechaHoy.Year;
            txtFechaEmisionFinBuscar.Text    = fechaHoy.ToString("dd/MM/yyyy");
        }
        private void CargarInicial()
        {
            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaTipoComprobanteCompra).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlTipoComprobante, tablaMaestraInfo, "Codigo", "NombreLargo");
            ddlTipoComprobante.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaMoneda).Where(x => x.Activo.Equals(1)).ToList();
            LlenarCombo(ddlMoneda, tablaMaestraInfo, "Codigo", "NombreLargo");
            ddlMoneda.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            //tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaMotivoIngresoCompra).Where(x => x.Activo.Equals(1)).ToList();
            //LlenarCombo(ddlMotivoIngreso, tablaMaestraInfo, "Codigo", "NombreLargo");
            ddlMotivoIngreso.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaUnidades).Where(x => x.Activo.Equals(1)).ToList();
            LlenarCombo(ddlUnidad, tablaMaestraInfo, "Codigo", "NombreCorto");
            ddlUnidad.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));

            var listaAlmacen = new Negocio.Almacen().Listar(0).Where(x => x.Activo.Equals(1)).ToList();

            LlenarCombo(ddlAlmacen, listaAlmacen, "AlmacenId", "Nombre");
            ddlAlmacen.Items.Insert(0, new ListItem(Constantes.Seleccione, Constantes.Seleccione_Value));
        }
示例#23
0
        public ComponenteLexico Analizar()
        {
            ComponenteLexico componenteLexico = new ComponenteLexico();

            limpiarLexema();
            int  estadoActual      = 0;
            bool continuarAnalisis = true;

            while (continuarAnalisis)
            {
                if (estadoActual == 0)
                {
                    LeerSiguienteCaracter();
                    DevorarEspaciosBlanco();

                    if (EsLetra(caracterActual) || EsCaracterEspecial(caracterActual))
                    {
                        estadoActual = 4;
                        concatenarLexema();
                    }
                    else if (EsDigito(caracterActual))
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("+"))
                    {
                        estadoActual = 5;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        estadoActual = 6;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("*"))
                    {
                        estadoActual = 7;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("/"))
                    {
                        estadoActual = 8;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("%"))
                    {
                        estadoActual = 9;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("("))
                    {
                        estadoActual = 10;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals(")"))
                    {
                        estadoActual = 11;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("@EOF@"))
                    {
                        estadoActual = 12;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("="))
                    {
                        estadoActual = 19;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("<"))
                    {
                        estadoActual = 20;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals(">"))
                    {
                        estadoActual = 21;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals(":"))
                    {
                        estadoActual = 22;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("!"))
                    {
                        estadoActual = 30;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("@FL@"))
                    {
                        estadoActual = 13;
                    }
                    else
                    {
                        estadoActual = 18;
                    }
                }
                else if (estadoActual == 1)
                {
                    LeerSiguienteCaracter();
                    if (EsDigito(caracterActual))
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals(","))
                    {
                        estadoActual = 2;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 14;
                    }
                }
                else if (estadoActual == 2)
                {
                    LeerSiguienteCaracter();

                    if (EsDigito(caracterActual))
                    {
                        estadoActual = 3;
                        concatenarLexema();
                    }
                    else
                    {
                        concatenarLexema();
                        estadoActual = 17;
                    }
                }
                else if (estadoActual == 14)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.ENTERO;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 3)
                {
                    LeerSiguienteCaracter();
                    if (EsDigito(caracterActual))
                    {
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 15;
                    }
                }

                else if (estadoActual == 15)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DECIMAL;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 4)
                {
                    LeerSiguienteCaracter();

                    if (EsLetra(caracterActual) || EsCaracterEspecial(caracterActual))
                    {
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 16;
                    }
                }

                else if (estadoActual == 5)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.SUMA;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 6)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.RESTA;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 7)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MULTIPLICACION;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 9)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MODULO;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 10)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.PARENTESIS_ABRE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 11)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.PARENTESIS_CIERRA;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }


                else if (estadoActual == 16)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.IDENTIFICADOR;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 8)
                {
                    LeerSiguienteCaracter();
                    if (caracterActual.Equals("*"))
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("/"))
                    {
                        concatenarLexema();
                        estadoActual = 36;
                    }
                    else
                    {
                        estadoActual = 33;
                    }
                }

                else if (estadoActual == 33)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DIVISION;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero + 1;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 34)
                {
                    LeerSiguienteCaracter();
                    if (caracterActual.Equals("*"))
                    {
                        concatenarLexema();
                        estadoActual = 35;
                    }
                    else if (caracterActual.Equals("@FL@"))
                    {
                        estadoActual = 37;
                    }

                    /*  else if (caracterActual.Equals("@EOF@"))
                     * {
                     *    limpiarLexema();
                     * }*/
                    else
                    {
                        concatenarLexema();
                    }
                }
                else if (estadoActual == 35)
                {
                    LeerSiguienteCaracter();
                    if (caracterActual.Equals("*"))
                    {
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("/"))
                    {
                        concatenarLexema();
                        comentario = lexema;
                        limpiarLexema();
                        estadoActual = 0;
                    }
                    else
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                }

                else if (estadoActual == 37)
                {
                    CargarNuevaLinea();
                    estadoActual = 34;

                    //concatenarLexema();
                }

                else if (estadoActual == 36)
                {
                    LeerSiguienteCaracter();
                    if (caracterActual.Equals("@FL@"))
                    {
                        estadoActual = 13;
                        comentario   = lexema;
                        limpiarLexema();
                    }
                    else
                    {
                        concatenarLexema();
                    }
                }

                else if (estadoActual == 13)
                {
                    CargarNuevaLinea();
                    estadoActual = 0;
                }

                else if (estadoActual == 20)
                {
                    LeerSiguienteCaracter();
                    if (caracterActual.Equals(">"))
                    {
                        estadoActual = 23;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("="))
                    {
                        concatenarLexema();
                        estadoActual = 24;
                    }
                    else
                    {
                        estadoActual = 25;
                    }
                }

                else if (estadoActual == 23)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DIFERENTE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 24)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MAYOR_O_IGUAL_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 25)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MENOR_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 21)
                {
                    LeerSiguienteCaracter();
                    if (caracterActual.Equals("="))
                    {
                        concatenarLexema();
                        estadoActual = 26;
                    }
                    else
                    {
                        estadoActual = 27;
                    }
                }
                else if (estadoActual == 26)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MAYOR_O_IGUAL_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 27)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MAYOR_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 22)
                {
                    LeerSiguienteCaracter();
                    if (caracterActual.Equals("="))
                    {
                        concatenarLexema();
                        estadoActual = 28;
                    }
                    else
                    {
                        concatenarLexema();
                        estadoActual = 29;
                    }
                }

                else if (estadoActual == 28)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.ASIGNACION;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 19)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.IGUAL_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 30)
                {
                    LeerSiguienteCaracter();
                    if (caracterActual.Equals("="))
                    {
                        concatenarLexema();
                        estadoActual = 31;
                    }
                    else
                    {
                        concatenarLexema();
                        estadoActual = 32;
                    }
                }

                else if (estadoActual == 31)
                {
                    continuarAnalisis                = false;
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DIFERENTE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length + 1;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 32)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;

                    Error error = Error.CrearErrorLexico(lexema, Categoria.DECIMAL, numeroLineaActual,
                                                         puntero + 2 - lexema.Length, puntero + 1,
                                                         "Caracter no valido",
                                                         "Leí \"" + caracterActual + "\" y esperaba un '='",
                                                         "Asegúrese que el caracter que se reciba despues de ! sea un =");

                    GestorErrores.Reportar(error);

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DECIMAL;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero + 2 - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero + 1;
                    componenteLexico.Tipo            = TipoComponente.DUMMY;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 29)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;

                    Error error = Error.CrearErrorLexico(lexema, Categoria.CARACTER_NO_VALIDO, numeroLineaActual,
                                                         puntero + 2 - lexema.Length, puntero + 1,
                                                         "Caracter no valido",
                                                         "Leí \"" + caracterActual + "\" y esperaba un '='",
                                                         "Asegúrese que el caracter que se reciba despues de ! sea un =");

                    GestorErrores.Reportar(error);

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DECIMAL;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero + 2 - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero + 1;
                    componenteLexico.Tipo            = TipoComponente.DUMMY;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 17)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;

                    Error error = Error.CrearErrorLexico(lexema, Categoria.DECIMAL, numeroLineaActual,
                                                         puntero + 2 - lexema.Length, puntero + 1,
                                                         "Número decimal no valido",
                                                         "Leí \"" + caracterActual + "\" y esperaba un digíto del 0 al 9",
                                                         "Asegúrese que el caracter que se reciba sea un dígito del 0 al 9");

                    GestorErrores.Reportar(error);

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DECIMAL;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero + 2 - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero + 1;
                    componenteLexico.Tipo            = TipoComponente.DUMMY;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }

                else if (estadoActual == 18)
                {
                    Error error = Error.CrearErrorLexico(caracterActual, Categoria.CARACTER_NO_VALIDO, numeroLineaActual,
                                                         puntero, puntero,
                                                         "Caracter no reconocido por el lenguaje",
                                                         "Leí \"" + caracterActual + "\"",
                                                         "Asegúrese que el caracter que se reciba sea valido dentro del lenguaje");

                    GestorErrores.Reportar(error);


                    throw new Exception("Se ha presentado un error de tipo stopper durante" +
                                        "el analisis léxico. Por favor verifique la consola de errores...");
                }

                else if (estadoActual == 12)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.FIN_ARCHIVO;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero;
                    componenteLexico.PosicionFinal   = puntero;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
            }

            return(componenteLexico);
        }
示例#24
0
        public ComponenteLexico Analizar()
        {
            ComponenteLexico componenteLexico = new ComponenteLexico();

            limpiarLexema();
            int  estadoActual      = 0;
            bool continuarAnalisis = true;

            while (continuarAnalisis)
            {
                if (estadoActual == 0)
                {
                    LeerSiguienteCaracter();
                    DevorarEspaciosBlanco();

                    if (EsLetra(CaracterActual) || CaracterActual.Equals("$") || CaracterActual.Equals("_"))
                    {
                        estadoActual = 4;
                        concatenarLexema();
                    }
                    else if (EsDigito(CaracterActual))
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("+"))
                    {
                        estadoActual = 5;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("-"))
                    {
                        estadoActual = 6;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("*"))
                    {
                        estadoActual = 7;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("/"))
                    {
                        estadoActual = 8;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("("))
                    {
                        estadoActual = 10;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals(")"))
                    {
                        estadoActual = 11;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("@EOF@"))
                    {
                        estadoActual = 12;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("="))
                    {
                        estadoActual = 19;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("<"))
                    {
                        estadoActual = 20;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals(">"))
                    {
                        estadoActual = 21;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals(":"))
                    {
                        estadoActual = 22;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("!"))
                    {
                        estadoActual = 30;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("@FL@"))
                    {
                        estadoActual = 13;
                    }
                    else
                    {
                        estadoActual = 18;
                    }
                }
                else if (estadoActual == 1)
                {
                    LeerSiguienteCaracter();

                    if (EsDigito(CaracterActual))
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals(","))
                    {
                        estadoActual = 2;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 14;
                    }
                }
                else if (estadoActual == 2)
                {
                    LeerSiguienteCaracter();
                    if (EsDigito(CaracterActual))
                    {
                        estadoActual = 3;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 17;
                    }
                }
                else if (estadoActual == 3)
                {
                    LeerSiguienteCaracter();
                    if (EsDigito(CaracterActual))
                    {
                        estadoActual = 3;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 15;
                    }
                }
                else if (estadoActual == 4)
                {
                    LeerSiguienteCaracter();
                    if (EsLetraODigito(CaracterActual) || CaracterActual.Equals("$") || CaracterActual.Equals("_"))
                    {
                        estadoActual = 4;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 16;
                    }
                }
                else if (estadoActual == 5)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.SUMA, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 6)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.RESTA, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 7)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MULTIPLICACION, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 8)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("*"))
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("/"))
                    {
                        estadoActual = 36;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 33;
                    }
                }
                else if (estadoActual == 9)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MODULO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 10)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.PARENTESIS_ABRE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 11)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.PARENTESIS_CIERRA, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //fin de archivo
                else if (estadoActual == 12)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.EOF, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    //TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //cargar nueva linea
                else if (estadoActual == 13)
                {
                    CargarNuevaLinea();
                    limpiarLexema();
                    estadoActual = 0;
                }

                else if (estadoActual == 14)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.ENTERO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 15)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.NUMERO_DECIMAL, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 16)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.IDENTIFICADOR, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //estado de error
                else if (estadoActual == 17)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.NUMERO_DECIMAL, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "Numero decimal no válido", "Leí" + CaracterActual + "y esperaba un digito del cero al 9",
                        "asegurese que el caracter que reciba sea un caracter del 0 al 9");

                    GestorErrores.Reportar(error);

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.NUMERO_DECIMAL;
                    componenteLexico.Lexema          = lexema + "0";
                    componenteLexico.NumeroLinea     = NumeroLineaActual;
                    componenteLexico.PosicionInicial = Puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = Puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.DUMMY;
                    MensajeRetorno(componenteLexico);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //estado de error
                else if (estadoActual == 18)
                {
                    Error error = Error.CrearErrorLexico(
                        CaracterActual,
                        Categoria.CARACTER_NO_VALIDO, NumeroLineaActual,
                        Puntero - 1, Puntero - 1,
                        "Caracter no reconocido", "Leí" + CaracterActual,
                        "Asegurese que el caracter sera valido");

                    GestorErrores.Reportar(error);

                    throw new Exception("Se ha presentado un error de tipo STOPPER durante el analisis lexico. Por favor verifique la consola de errores");
                }
                else if (estadoActual == 19)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.IGUAL_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = NumeroLineaActual;
                    componenteLexico.PosicionInicial = Puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = Puntero - 1;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 20)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals(">"))
                    {
                        estadoActual = 23;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("="))
                    {
                        estadoActual = 24;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 24;
                    }
                }
                else if (estadoActual == 21)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("="))
                    {
                        estadoActual = 26;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 27;
                    }
                }
                else if (estadoActual == 22)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("="))
                    {
                        estadoActual = 28;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 29;
                    }
                }
                else if (estadoActual == 23)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.DIFERENTE_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 24)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MENOR_IGUAL_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 25)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MENOR_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 26)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MAYOR_IGUAL_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 27)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.MAYOR_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 28)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.ASIGNACION, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    MensajeRetorno(componenteLexico);
                    limpiarLexema();
                }
                //estado de error
                else if (estadoActual == 29)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.NUMERO_DECIMAL, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "Asignación no válida", "Leí" + CaracterActual + " y esperaba =",
                        "asegurese que el caracter que reciba sea =");

                    GestorErrores.Reportar(error);
                }
                else if (estadoActual == 30)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("="))
                    {
                        estadoActual = 31;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 32;
                    }
                }
                else if (estadoActual == 31)
                {
                    continuarAnalisis     = false;
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.DIFERENTE_QUE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    MensajeRetorno(componenteLexico);
                    limpiarLexema();
                }
                //estado de error
                else if (estadoActual == 32)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.NUMERO_DECIMAL, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "Asignación no válida", "Leí" + CaracterActual + " y esperaba *",
                        "asegurese que el caracter que reciba sea *");

                    GestorErrores.Reportar(error);
                }
                else if (estadoActual == 33)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componenteLexico      = ComponenteLexico.crear(lexema, Categoria.DIVISION, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.SIMBOLO;
                    MensajeRetorno(componenteLexico);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //revisar
                else if (estadoActual == 34)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("@FL@"))
                    {
                        estadoActual = 37;
                        CargarNuevaLinea();
                    }
                    else if (CaracterActual.Equals("*"))
                    {
                        estadoActual = 35;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                }
                else if (estadoActual == 35)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("*"))
                    {
                        estadoActual = 35;
                        concatenarLexema();
                    }
                    else if (CaracterActual.Equals("/"))
                    {
                        estadoActual = 0;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                }
                else if (estadoActual == 36)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual.Equals("@FL@"))
                    {
                        estadoActual = 13;
                    }
                    else
                    {
                        estadoActual = 36;
                    }
                }
                //estado para arreglar
                else if (estadoActual == 37)
                {
                    CargarNuevaLinea();

                    if (CaracterActual.Equals("@FL@"))
                    {
                        estadoActual = 34;
                    }
                }
            }

            return(componenteLexico);
        }
示例#25
0
        public ComponenteLexico DevolverComponente()
        {
            ComponenteLexico componente = null;
            int    estadoActual         = 0;
            int    nroBS             = 0;
            bool   continuarAnalisis = true;
            string lexema            = "";

            while (continuarAnalisis)
            {
                if (estadoActual == 0)
                {
                    LeerSiguienteCaracter();

                    while (" ".Equals(caracterActual))
                    {
                        LeerSiguienteCaracter();
                    }
                    if (Char.IsLetter(caracterActual.ToCharArray()[0]))
                    {
                        estadoActual = 4;
                        lexema      += caracterActual;
                    }
                    else if (Char.IsDigit(caracterActual.ToCharArray()[0]))
                    {
                        estadoActual = 1;
                        lexema      += caracterActual;
                    }
                    else if ("+".Equals(caracterActual))
                    {
                        estadoActual = 5;
                        lexema      += caracterActual;
                    }
                    else if ("-".Equals(caracterActual))
                    {
                        estadoActual = 8;
                        lexema      += caracterActual;
                    }
                    else if ("*".Equals(caracterActual))
                    {
                        estadoActual = 7;
                        lexema      += caracterActual;
                    }
                    else if ("/".Equals(caracterActual))
                    {
                        estadoActual = 6;
                        lexema      += caracterActual;
                    }
                    else if ("%".Equals(caracterActual))
                    {
                        estadoActual = 9;
                        lexema      += caracterActual;
                    }
                    else if ("(".Equals(caracterActual))
                    {
                        estadoActual = 10;
                        lexema      += caracterActual;
                    }
                    else if (")".Equals(caracterActual))
                    {
                        estadoActual = 11;
                        lexema      += caracterActual;
                    }
                    else if ("#".Equals(caracterActual))
                    {
                        estadoActual = 22;
                        lexema      += caracterActual;
                    }
                    else if ("@EOF@".Equals(caracterActual))
                    {
                        estadoActual = 12;
                        lexema      += caracterActual;
                    }
                    else if ("=".Equals(caracterActual))
                    {
                        estadoActual = 19;
                        lexema      += caracterActual;
                    }
                    else if ("<".Equals(caracterActual))
                    {
                        estadoActual = 20;
                        lexema      += caracterActual;
                    }
                    else if (">".Equals(caracterActual))
                    {
                        estadoActual = 21;
                        lexema      += caracterActual;
                    }
                    else if ("'".Equals(caracterActual))
                    {
                        estadoActual = 23;
                        lexema      += caracterActual;
                        Console.WriteLine("Entro ad estaod comillads");
                    }
                    else if ("@FL@".Equals(caracterActual))
                    {
                        estadoActual = 13;
                    }
                    else
                    {
                        estadoActual = 18;
                    }
                }
                else if (estadoActual == 1)
                {
                    LeerSiguienteCaracter();
                    if (Char.IsDigit(caracterActual.ToCharArray()[0]))
                    {
                        estadoActual = 1;
                        lexema      += caracterActual;
                    }
                    else if (".".Equals(caracterActual))
                    {
                        estadoActual = 2;
                        lexema      += caracterActual;
                    }
                    else
                    {
                        estadoActual = 14;
                    }
                }
                else if (estadoActual == 2)
                {
                    LeerSiguienteCaracter();
                    if (Char.IsDigit(caracterActual.ToCharArray()[0]))
                    {
                        estadoActual = 3;
                        lexema      += caracterActual;
                    }
                    else
                    {
                        estadoActual = 17;
                        lexema      += caracterActual;
                    }
                }
                else if (estadoActual == 3)
                {
                    LeerSiguienteCaracter();
                    if (Char.IsDigit(caracterActual.ToCharArray()[0]))
                    {
                        estadoActual = 3;
                    }
                    else
                    {
                        estadoActual = 15;
                    }
                }
                else if (estadoActual == 4)
                {
                    LeerSiguienteCaracter();

                    if (Char.IsLetter(caracterActual.ToCharArray()[0]))
                    {
                        estadoActual = 4;
                        lexema      += caracterActual;
                    }
                    else
                    {
                        estadoActual = 16;
                    }
                }
                else if (estadoActual == 5)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "SUMA", lineaActual.Numero, puntero, puntero);
                }
                else if (estadoActual == 6)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "DIVISION", lineaActual.Numero, puntero, puntero);
                }
                else if (estadoActual == 7)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "MULTIPLICACION", lineaActual.Numero, puntero, puntero);
                }
                else if (estadoActual == 8)
                {
                    LeerSiguienteCaracter();
                    if ("-".Equals(caracterActual))
                    {
                        estadoActual = 36;
                        lexema      += caracterActual;
                    }
                    else
                    {
                        estadoActual = 33;
                    }
                }
                else if (estadoActual == 9)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "MODULO", lineaActual.Numero, puntero, puntero);
                }
                else if (estadoActual == 10)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "PARENTESIS ABRE", lineaActual.Numero, puntero, puntero);
                }
                else if (estadoActual == 11)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "PARENTESIS CIERRA", lineaActual.Numero, puntero, puntero);
                }
                else if (estadoActual == 12)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "@EOF@", lineaActual.Numero, puntero, puntero);
                }
                else if (estadoActual == 13)
                {
                    CargarNuevaLinea();
                    estadoActual = 0;
                }
                else if (estadoActual == 14)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componente = ComponenteLexico.CrearLiteral(lexema, "ENTERO", lineaActual.Numero, puntero - lexema.Length + 1, puntero);
                }
                else if (estadoActual == 15)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componente = ComponenteLexico.CrearLiteral(lexema, "DECIMAL", lineaActual.Numero, puntero - lexema.Length + 1, puntero);
                }
                else if (estadoActual == 16)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componente = ComponenteLexico.CrearComponenteLexico(lexema, "IDENTIFICADOR", lineaActual.Numero, puntero - lexema.Length + 1, puntero);
                }
                else if (estadoActual == 17)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;

                    ManejadorErrores.ObtenerManejadorErrores().Agregar(Error.CrearErrorLexico(lexema,
                                                                                              "Se esperaba un número y se recibió: " + caracterActual,
                                                                                              "Numero decimal no valido",
                                                                                              "Asegurese de que el número decimal sea válido",
                                                                                              lineaActual.Numero,
                                                                                              puntero - lexema.Length,
                                                                                              puntero
                                                                                              ));


                    componente = ComponenteLexico.CrearDummy(lexema, "DECIMAL", lineaActual.Numero, puntero - lexema.Length + 1, puntero);
                }
                else if (estadoActual == 18)
                {
                    ManejadorErrores.ObtenerManejadorErrores().Agregar(Error.CrearErrorLexico(caracterActual,
                                                                                              "Caracter no aceptado por el lenguaje: " + caracterActual,
                                                                                              "No es posible continuar con el analisis por caracter no valido",
                                                                                              "Asegurese de utilizar caracteres aceptados por el lenguaje",
                                                                                              lineaActual.Numero,
                                                                                              puntero - lexema.Length,
                                                                                              puntero
                                                                                              ));

                    throw new Exception("Se ha presentado un error tipo Stopper que no permite continuar con el análisis, verifique la consola de errores");
                }
                else if (estadoActual == 19)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "ASIGNACION", lineaActual.Numero, puntero, puntero);
                }
                else if (estadoActual == 20)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "LECTURA", lineaActual.Numero, puntero - lexema.Length, puntero);
                }
                else if (estadoActual == 21)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "ESCRITURA", lineaActual.Numero, puntero - lexema.Length, puntero);
                }
                else if (estadoActual == 22)
                {
                    continuarAnalisis = false;
                    componente        = ComponenteLexico.CrearComponenteLexico(lexema, "CONCATENACION", lineaActual.Numero, puntero, puntero);
                }
                else if (estadoActual == 23)
                {
                    LeerSiguienteCaracter();
                    if ("\\".Equals(caracterActual))
                    {
                        estadoActual = 24;
                        Console.WriteLine("Leido un BS");
                        nroBS += 1;
                    }
                    else if ("'".Equals(caracterActual))
                    {
                        estadoActual = 25;
                        lexema      += caracterActual;
                    }
                    else if ("@FL@".Equals(caracterActual))
                    {
                        estadoActual = 26;
                        //lexema += caracterActual;
                    }
                    else
                    {
                        estadoActual = 23;
                        lexema      += caracterActual;
                    }
                }
                else if (estadoActual == 24)
                {
                    LeerSiguienteCaracter();
                    if ("@FL@".Equals(caracterActual))
                    {
                        estadoActual = 26;
                    }
                    else
                    {
                        estadoActual = 23;
                        lexema      += caracterActual;
                    }
                }
                else if (estadoActual == 25)
                {
                    continuarAnalisis = false;
                    //DevolverPuntero();
                    componente = ComponenteLexico.CrearLiteral(lexema, "CADENA", lineaActual.Numero, puntero - lexema.Length, puntero);
                }
                else if (estadoActual == 26)
                {
                    continuarAnalisis = false;
                    ManejadorErrores.ObtenerManejadorErrores().Agregar(Error.CrearErrorLexico(lexema,
                                                                                              "Se esperaba una comilla ['] y se recibió: " + caracterActual,
                                                                                              "Cadena no valida",
                                                                                              "Asegurese de que la estructura de cerrar la cadena con un ['].",
                                                                                              lineaActual.Numero,
                                                                                              puntero - lexema.Length - nroBS,
                                                                                              puntero
                                                                                              ));

                    componente = ComponenteLexico.CrearDummy(lexema, "CADENA_INVALIDA", lineaActual.Numero, puntero - lexema.Length - nroBS, puntero);
                }

                else if (estadoActual == 33)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();
                    componente = ComponenteLexico.CrearComponenteLexico(lexema, "RESTA", lineaActual.Numero, puntero - lexema.Length, puntero);
                }


                else if (estadoActual == 36)
                {
                    LeerSiguienteCaracter();
                    if ("@FL@".Equals(caracterActual))
                    {
                        estadoActual = 13;
                        lexema       = "";
                    }
                    else
                    {
                        estadoActual = 36;
                        lexema      += caracterActual;
                    }
                }
            }

            if (caracterActual != "@EOF@")
            {
                TablaMaestra.ObtenerTablaMaestra().Sincronizar(componente);
            }
            return(componente);
        }
示例#26
0
 private void Resetear()
 {
     Cache.ObtenerCache().Limpiar();
     ManejadorErrores.Limpiar();
     TablaMaestra.Limpiar();
 }
示例#27
0
        public ComponenteLexico Analizar()
        {
            Resetear();
            while (ContinuarAnalisis)
            {
                if (EstadoActual == 0)
                {
                    EstadoCero();
                }
                else if (EstadoActual == 1)
                {
                    EstadoUno();
                }
                else if (EstadoActual == 2)
                {
                    EstadoDos();
                }
                else if (EstadoActual == 3)
                {
                    EstadoTres();
                }
                else if (EstadoActual == 4)
                {
                    EstadoCuatro();
                }
                else if (EstadoActual == 5)
                {
                    EstadoCinco();
                }
                else if (EstadoActual == 6)
                {
                    EstadoSeis();
                }
                else if (EstadoActual == 7)
                {
                    EstadoSiete();
                }
                else if (EstadoActual == 8)
                {
                    EstadoOcho();
                }
                else if (EstadoActual == 9)
                {
                    EstadoNueve();
                }
                else if (EstadoActual == 10)
                {
                    EstadoDiez();
                }
                else if (EstadoActual == 11)
                {
                    EstadoOnce();
                }
                else if (EstadoActual == 12)
                {
                    EstadoDoce();
                }
                else if (EstadoActual == 13)
                {
                    EstadoTrece();
                }
                else if (EstadoActual == 14)
                {
                    EstadoCatorce();
                }
                else if (EstadoActual == 15)
                {
                    EstadoQuince();
                }
                else if (EstadoActual == 16)
                {
                    EstadoDieciseis();
                }
                else if (EstadoActual == 17)
                {
                    EstadoDiecisiete();
                }
                else if (EstadoActual == 18)
                {
                    EstadoDieciocho();
                }
                else if (EstadoActual == 19)
                {
                    EstadoDiecinueve();
                }
                else if (EstadoActual == 20)
                {
                    EstodoVeinte();
                }
                else if (EstadoActual == 21)
                {
                    EstadoVeintiuno();
                }
                else if (EstadoActual == 22)
                {
                    EstadoVeintidos();
                }
                else if (EstadoActual == 23)
                {
                    EstadoVeintitres();
                }
                else if (EstadoActual == 24)
                {
                    EstadoVeinticuatro();
                }
                else if (EstadoActual == 25)
                {
                    EstadoVeinticinco();
                }
                else if (EstadoActual == 26)
                {
                    EstadoVeintiseis();
                }
                else if (EstadoActual == 27)
                {
                    EstadoVeintisiete();
                }
                else if (EstadoActual == 28)
                {
                    EstadoVeintiocho();
                }
                else if (EstadoActual == 29)
                {
                    EstadoVeintinueve();
                }
                else if (EstadoActual == 30)
                {
                    EstadoTreinta();
                }
                else if (EstadoActual == 31)
                {
                    EstadoTreintaiuno();
                }
                else if (EstadoActual == 32)
                {
                    EstadoTreintaidos();
                }
                else if (EstadoActual == 33)
                {
                    EstadoTreintaitres();
                }
                else if (EstadoActual == 34)
                {
                    EstadoTreintaicuatro();
                }
                else if (EstadoActual == 35)
                {
                    EstadoTreintaicinco();
                }
                else if (EstadoActual == 36)
                {
                    EstadoTreintaiseis();
                }
                else if (EstadoActual == 37)
                {
                    EstadoTreintaisiete();
                }
            }

            return(TablaMaestra.SincronizarTabla(Componente));
        }
        private void CargarDatos(int codigoCompra)
        {
            var usuarioInfo = ObtenerUsuarioInfo();
            var script      = new StringBuilder("");

            grvVenta.DataBind();
            int numeroRegistros = 10;
            int numeroPagina    = Convert.ToInt16(ViewState["PageIndex"]);

            int indicePagina = numeroPagina == 0 ? 0 : numeroPagina - 1;

            pageIndex = indicePagina + 1;

            #region Cargar Datos Compra
            var compra    = new Negocio.Compra().ListarPaginado(codigoCompra, 0, usuarioInfo.TipoNegocioId, 0, 0).First();
            var proveedor = new Negocio.Proveedor().Listar(compra.ProveedorId).First();
            ddlTipoComprobante.SelectedValue = "0" + compra.TipoDocumentoId.ToString();
            txtSerie.Text           = compra.NumeroSerie;
            txtNumeroDocumento.Text = compra.NumeroComprobante;

            ddlMoneda.SelectedValue = compra.MonedaId.ToString();

            txtFechaEmision.Text             = compra.FechaEmision.ToString("dd/MM/yyyy");
            txtProveedor.Text                = proveedor.Nombre;
            txtDireccion.Text                = proveedor.Direccion;
            txtNumeroDocumentoProveedor.Text = proveedor.NumeroDocumento;
            txtGlosa.Text = compra.Glosa;
            lblComprobanteSubTotal.Text = compra.SubTotal.ToString("###,##0.#0");
            lblComprobanteIgv.Text      = compra.Igv.ToString("###,##0.#0");
            lblComprobanteTotal.Text    = compra.Total.ToString("###,##0.#0");

            hdnProveedorId.Value         = proveedor.ProveedorId.ToString();
            hdnEstadoComprobanteId.Value = compra.EstadoComprobanteId.ToString();

            var tablaMaestraInfo = new TablaMaestra().Listar(0, Constantes.TablaMotivoIngresoCompra).ToList();
            if (("0" + compra.TipoDocumentoId.ToString()).Equals("01") || ("0" + compra.TipoDocumentoId.ToString()).Equals("09"))
            {
                tablaMaestraInfo = tablaMaestraInfo.Where(x => x.Codigo == Constantes.MotivoIngresoCompraPorVenta.ToString()).ToList();
            }
            else
            {
                tablaMaestraInfo = tablaMaestraInfo.Where(x => x.Codigo != Constantes.MotivoIngresoCompraPorVenta.ToString()).ToList();
            }
            LlenarCombo(ddlMotivoIngreso, tablaMaestraInfo, "Codigo", "NombreLargo");
            ddlMotivoIngreso.SelectedValue = compra.MotivoIngresoId.ToString();

            if (compra.EstadoComprobanteId == Constantes.EstadoComprobanteCompraAnulado)
            {
                ddlTipoComprobante.Enabled  = false;
                txtSerie.ReadOnly           = true;
                txtNumeroDocumento.ReadOnly = true;
                ddlMoneda.Enabled           = false;
                ddlAlmacen.Enabled          = false;
                txtFechaEmision.ReadOnly    = true;
                txtProveedor.ReadOnly       = true;
                txtGlosa.ReadOnly           = true;

                btnAgregarItem.Enabled   = false;
                btnCancelar.Enabled      = false;
                ddlMotivoIngreso.Enabled = false;

                lblDetalleCompra.Text = "DETALLE COMPRA";

                script.Append("document.getElementById('lblDetalleCompra').className ='lblTitulo';");
                script.Append("document.getElementById('trDatosProducto').style.display='none';");
                script.Append("document.getElementById('trMontosProducto').style.display='none';");
                script.Append("document.getElementById('trOpcionesItem').style.display='none';");
                script.Append("document.getElementById('imgBuscarCliente').style.display='none';");
                script.Append("document.getElementById('imgFechaEmision').style.display='none';");

                script.Append("document.getElementById('btnGuardar').style.display='none';");
                script.Append("document.getElementById('btnCerrar').style.display='';");
            }
            else
            {
                txtProveedor.ReadOnly = true;
                txtGlosa.ReadOnly     = true;
                script.Append("document.getElementById('imgBuscarCliente').style.display='none';");
                script.Append("document.getElementById('btnAnular').style.display='';");
            }

            #endregion

            var compraInfoLista = new Negocio.Compra().ListarComprasDetalle(0, codigoCompra);
            grvVenta.DataSource = compraInfoLista;
            grvVenta.DataBind();

            if (compraInfoLista.Count > 0)
            {
                grvVenta.HeaderRow.Attributes["style"] = "display: none";
                grvVenta.UseAccessibleHeader           = true;
                grvVenta.HeaderRow.TableSection        = TableRowSection.TableHeader;

                Session["CompraDetalle"] = compraInfoLista;
            }
            else
            {
                Session["CompraDetalle"] = null;
            }
            rowCount  = compraInfoLista.Count > 0 ? compraInfoLista.First().TotalFilas : 0;
            pageCount = CalcPageCount(rowCount);
            ViewState["PageCount"] = pageCount;

            #region Texto del Pie de Página
            if (compraInfoLista.Count > 0)
            {
                if (numeroRegistros == 0)
                {
                    lblPaginacion.Text = "Página " + pageIndex.ToString("") + " de 1, con un Total de " + rowCount.ToString("") + " registros";
                    script.Append("document.getElementById('lblPaginacion').innerText = '");
                    script.Append("Página " + pageIndex.ToString("") + " de 1, con un Total de " + rowCount.ToString("") + " registros';");
                }
                else
                {
                    lblPaginacion.Text = "Página " + pageIndex.ToString("") + " de " + pageCount.ToString("") + ", con un Total de " + rowCount.ToString("") + " registros";
                    script.Append("document.getElementById('lblPaginacion').innerText = '");
                    script.Append("Página " + pageIndex.ToString("") + " de " + pageCount.ToString("") + ", con un Total de " + rowCount.ToString("") + " registros';");
                }
            }
            else
            {
                lblPaginacion.Text = "No se obtuvieron resultados";
                script.Append("document.getElementById('lblPaginacion').innerText = 'No se obtuvieron resultados';");
            }
            #endregion

            RefreshPageButtons();
            RegistrarScript(script.ToString(), "Paginacion");
        }
        public ComponenteLexico Analizar()
        {
            ComponenteLexico componenteLexico = new ComponenteLexico();

            LimpiarLexema();
            int  estadoActual      = 0;
            bool continuarAnalisis = true;

            while (continuarAnalisis)
            {
                if (estadoActual == 0)
                {
                    LeerSiguienteCaracter();
                    DevorarEspaciosBlanco();

                    if (EsLetra(caracterActual) || caracterActual.Equals("$") || caracterActual.Equals("_"))
                    {
                        estadoActual = 4;
                        concatenarLexema();
                    }
                    else if (EsDigito(caracterActual))
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("+"))
                    {
                        estadoActual = 5;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("-"))
                    {
                        estadoActual = 6;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("*"))
                    {
                        estadoActual = 7;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("/"))
                    {
                        estadoActual = 8;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("%"))
                    {
                        estadoActual = 9;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("("))
                    {
                        estadoActual = 10;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals(")"))
                    {
                        estadoActual = 11;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("@EOF@"))
                    {
                        estadoActual = 12;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("="))
                    {
                        estadoActual = 19;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("<"))
                    {
                        estadoActual = 20;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals(">"))
                    {
                        estadoActual = 21;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals(":"))
                    {
                        estadoActual = 22;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("!"))
                    {
                        estadoActual = 30;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("@FL@"))
                    {
                        estadoActual = 13;
                    }
                    else
                    {
                        estadoActual = 18;
                    }
                }
                else if (estadoActual == 1)
                {
                    LeerSiguienteCaracter();

                    if (EsDigito(caracterActual))
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals(","))
                    {
                        estadoActual = 2;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 14;
                    }
                }
                else if (estadoActual == 2)
                {
                    LeerSiguienteCaracter();

                    if (EsDigito(caracterActual))
                    {
                        estadoActual = 3;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 17;
                    }
                }
                else if (estadoActual == 3)
                {
                    LeerSiguienteCaracter();
                    if (EsDigito(caracterActual))
                    {
                        estadoActual = 3;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 15;
                    }
                }
                else if (estadoActual == 4)
                {
                    LeerSiguienteCaracter();
                    if (EsLetraODigito(caracterActual) || caracterActual.Equals("$") || caracterActual.Equals("_"))
                    {
                        estadoActual = 4; concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 16;
                    }
                }
                else if (estadoActual == 5)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.SUMA;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 6)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.RESTA;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 7)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MULTIPLICACION;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 8)
                {
                    LeerSiguienteCaracter();

                    if (caracterActual.Equals("*"))
                    {
                        estadoActual = 34;
                        concatenarLexema();

                        LeerSiguienteCaracter();

                        if (caracterActual != "*" && caracterActual != "@FL@")
                        {
                            estadoActual = 34;
                            concatenarLexema();
                        }
                        else if (caracterActual.Equals("*"))
                        {
                            estadoActual = 35;
                            concatenarLexema();
                        }
                        else if (caracterActual.Equals("*"))
                        {
                            estadoActual = 35;
                            concatenarLexema();
                        }
                        else if (caracterActual != "*" && caracterActual != "/")
                        {
                            estadoActual = 34;
                            concatenarLexema();
                        }
                        else if (caracterActual.Equals("@FL@"))
                        {
                            estadoActual = 37;
                            concatenarLexema();
                        }
                        //else if (caracterActual.Equals("CNL"))
                        //{
                        //    estadoActual = 34;
                        //    concatenarLexema();
                        //}
                    }
                    else if (caracterActual.Equals("/"))
                    {
                        estadoActual = 36;
                        concatenarLexema();

                        LeerSiguienteCaracter();

                        if (caracterActual != "@FL@")
                        {
                            estadoActual = 36;
                            concatenarLexema();
                        }
                        else if (caracterActual.Equals("@FL@"))
                        {
                            estadoActual = 13;
                            concatenarLexema();
                        }
                    }
                    else
                    {
                        estadoActual = 33;
                    }
                }//****
                else if (estadoActual == 9)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MODULO;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 10)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.PARENTESIS_ABRE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 11)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.PARENTESIS_CIERRA;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 12)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.EOF;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    //componenteLexico.Tipo = TipoComponente.SIMBOLO;

                    //TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 13)
                {
                    CargarNuevaLinea();
                    estadoActual = 0;
                }
                else if (estadoActual == 14)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.ENTERO;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 15)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DECIMAL;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 16)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.IDENTIFICADOR;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 17)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(lexema, Categoria.DECIMAL,
                                                         numeroLineaActual, puntero - lexema.Length, puntero - 1,
                                                         "Numero decimal no válido",
                                                         "Lei \"" + caracterActual + "\" y esperaba un digito del 0 al 9",
                                                         "Asegurese que el caracter que se reciba sea un digito del 0 al 9");

                    GestorErrores.Reportar(error);

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DECIMAL;
                    componenteLexico.Lexema          = lexema + "0"; //Comodin
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.DUMMY;//Lo tuvo que crear para recuperarse del problema

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 18)
                {
                    Error error = Error.CrearErrorLexico(caracterActual, Categoria.CARACTER_NO_VALIDO,
                                                         numeroLineaActual, puntero - 1, puntero - 1,
                                                         "Carcater no reconocido por el lenguaje",
                                                         "Lei \"" + caracterActual + "\"",
                                                         "Asegurese que el caracter que se reciba sea valido dentro del lenguaje");

                    GestorErrores.Reportar(error);

                    throw new Exception("Se ha presentado un error de tipo stopper durante el " +
                                        "analisis léxico. Por favor verifique la consola de errores...");
                }
                else if (estadoActual == 19)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.IGUAL_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 20)
                {
                    LeerSiguienteCaracter();

                    if (caracterActual.Equals(">"))
                    {
                        estadoActual = 23;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("="))
                    {
                        estadoActual = 24;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 25;
                    }
                }
                else if (estadoActual == 21)
                {
                    LeerSiguienteCaracter();

                    if (caracterActual.Equals(">"))
                    {
                        estadoActual = 26;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 27;
                    }
                }
                else if (estadoActual == 22)
                {
                    LeerSiguienteCaracter();

                    if (caracterActual.Equals("="))
                    {
                        estadoActual = 28;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 29;
                    }
                }
                else if (estadoActual == 23)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DIFERENTE_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 24)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MENOR_O_IGUAL_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 25)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MENOR_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 26)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MAYOR_O_IGUAL_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 27)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.MAYOR_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 28)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.ASIGNACION;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 29)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(lexema, Categoria.ASIGNACION,
                                                         numeroLineaActual, puntero - lexema.Length, puntero - 1,
                                                         "Caracter no válido",
                                                         "Lei \"" + caracterActual + "\" y esperaba un =",
                                                         "Asegurese que la estructura ASIGNACION sea la adecuada");

                    GestorErrores.Reportar(error);

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.ASIGNACION;
                    componenteLexico.Lexema          = lexema + "0"; //Comodin
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.DUMMY;//Lo tuvo que crear para recuperarse del problema

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 30)
                {
                    LeerSiguienteCaracter();

                    if (caracterActual.Equals("="))
                    {
                        estadoActual = 31;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 32;
                    }
                }
                else if (estadoActual == 31)
                {
                    continuarAnalisis = false;

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DIFERENTE_QUE;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 32)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(lexema, Categoria.DIFERENTE_QUE,
                                                         numeroLineaActual, puntero - lexema.Length, puntero - 1,
                                                         "Caracter no válido",
                                                         "Lei \"" + caracterActual + "\" y esperaba un =",
                                                         "Asegurese que la estructura DIFERENTE QUE sea la adecuada");

                    GestorErrores.Reportar(error);

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DIFERENTE_QUE;
                    componenteLexico.Lexema          = lexema + "0"; //Comodin
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.DUMMY;//Lo tuvo que crear para recuperarse del problema

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 33)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    componenteLexico                 = new ComponenteLexico();
                    componenteLexico.Categoria       = Categoria.DIVISION;
                    componenteLexico.Lexema          = lexema;
                    componenteLexico.NumeroLinea     = numeroLineaActual;
                    componenteLexico.PosicionInicial = puntero - lexema.Length;
                    componenteLexico.PosicionFinal   = puntero - 1;
                    componenteLexico.Tipo            = TipoComponente.SIMBOLO;

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                }
                else if (estadoActual == 34)
                {
                    LeerSiguienteCaracter();

                    if (caracterActual.Equals("*"))
                    {
                        estadoActual = 35;
                        concatenarLexema();
                    }
                    else if (caracterActual.Equals("@FL@"))
                    {
                        estadoActual = 37;
                    }
                    else
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                }
                else if (estadoActual == 35)
                {
                    LeerSiguienteCaracter();

                    if (caracterActual.Equals("/"))
                    {
                        estadoActual = 0;
                    }
                    else if (caracterActual.Equals("*"))
                    {
                        estadoActual = 35;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                }
                else if (estadoActual == 36)
                {
                    LeerSiguienteCaracter();

                    if (caracterActual.Equals("@FL@"))
                    {
                        estadoActual = 13;
                    }
                    else
                    {
                        estadoActual = 36;
                        concatenarLexema();
                    }
                }
                else if (estadoActual == 37)
                {
                    CargarNuevaLinea();
                    estadoActual = 34;
                }
            }
            if (componenteLexico.Equals("@EOF@"))
            {
                //TablaMaestra.ObtenerTablaMaestra().Sincronizar(componente);
                TablaMaestra.SincronizarSimbolo(componenteLexico);
            }
            return(componenteLexico);
        }
示例#30
0
        public ComponenteLexico Analizar()
        {
            ComponenteLexico componenteLexico = new ComponenteLexico();

            limpiarLexema();
            int  estadoActual      = 0;
            bool continuarAnalisis = true;

            while (continuarAnalisis)
            {
                if (estadoActual == 0)
                {
                    LeerSiguienteCaracter();
                    DevorarEspaciosBlanco();
                    if (CaracterActual == "0" || CaracterActual == "1")
                    {
                        estadoActual = 1;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "#")
                    {
                        estadoActual = 6;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "K")
                    {
                        estadoActual = 60;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "C")
                    {
                        estadoActual = 58;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "I")
                    {
                        estadoActual = 7;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "O")
                    {
                        estadoActual = 9;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "U")
                    {
                        estadoActual = 15;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "D")
                    {
                        estadoActual = 17;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "G")
                    {
                        estadoActual = 21;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "S")
                    {
                        estadoActual = 24;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "R")
                    {
                        estadoActual = 46;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "F")
                    {
                        estadoActual = 54;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "@FL@")
                    {
                        estadoActual = 61;
                    }
                    else if (CaracterActual == "@EOF@")
                    {
                        estadoActual = 62;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 1)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "0" || CaracterActual == "1")
                    {
                        estadoActual = 2;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 96;
                    }
                }

                else if (estadoActual == 2)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "0" || CaracterActual == "1")
                    {
                        estadoActual = 3;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 96;
                    }
                }
                else if (estadoActual == 3)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "0" || CaracterActual == "1")
                    {
                        estadoActual = 4;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 5;
                    }
                }
                else if (estadoActual == 4)
                {
                    estadoActual = 64;
                }

                else if (estadoActual == 5)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.VALOR_ENVIO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 6)
                {
                    estadoActual = 65;
                }

                else if (estadoActual == 7)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "N")
                    {
                        estadoActual = 8;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 83;
                    }
                }
                else if (estadoActual == 8)
                {
                    estadoActual = 78;
                }
                else if (estadoActual == 9)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "U")
                    {
                        estadoActual = 10;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "N")
                    {
                        estadoActual = 12;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "F")
                    {
                        estadoActual = 13;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 10)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 11;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 85;
                    }
                }
                else if (estadoActual == 11)
                {
                    estadoActual = 66;
                }
                else if (estadoActual == 12)
                {
                    estadoActual = 67;
                }
                else if (estadoActual == 13)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "F")
                    {
                        estadoActual = 14;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 86;
                    }
                }
                else if (estadoActual == 14)
                {
                    estadoActual = 68;
                }
                else if (estadoActual == 15)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "P")
                    {
                        estadoActual = 16;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 88;
                    }
                }
                else if (estadoActual == 16)
                {
                    estadoActual = 69;
                }
                else if (estadoActual == 17)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "O")
                    {
                        estadoActual = 18;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 89;
                    }
                }
                else if (estadoActual == 18)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "W")
                    {
                        estadoActual = 19;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 89;
                    }
                }
                else if (estadoActual == 19)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "N")
                    {
                        estadoActual = 20;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 89;
                    }
                }
                else if (estadoActual == 20)
                {
                    estadoActual = 70;
                }
                else if (estadoActual == 21)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "E")
                    {
                        estadoActual = 22;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 90;
                    }
                }
                else if (estadoActual == 22)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 23;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 90;
                    }
                }
                else if (estadoActual == 23)
                {
                    estadoActual = 71;
                }
                else if (estadoActual == 24)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 25;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "H")
                    {
                        estadoActual = 32;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "U")
                    {
                        estadoActual = 40;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 25)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "A")
                    {
                        estadoActual = 26;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 26)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "R")
                    {
                        estadoActual = 27;
                        concatenarLexema();
                    }
                    else if (CaracterActual == "T")
                    {
                        estadoActual = 29;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 63;
                    }
                }
                else if (estadoActual == 27)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 28;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 92;
                    }
                }
                else if (estadoActual == 28)
                {
                    estadoActual = 79;
                }
                else if (estadoActual == 29)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "U")
                    {
                        estadoActual = 30;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 93;
                    }
                }
                else if (estadoActual == 30)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "S")
                    {
                        estadoActual = 31;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 93;
                    }
                }
                else if (estadoActual == 31)
                {
                    estadoActual = 72;
                }
                else if (estadoActual == 32)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "U")
                    {
                        estadoActual = 33;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 33)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 34;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 34)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "D")
                    {
                        estadoActual = 35;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 35)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "O")
                    {
                        estadoActual = 36;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 36)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "W")
                    {
                        estadoActual = 37;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 37)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "N")
                    {
                        estadoActual = 38;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 94;
                    }
                }
                else if (estadoActual == 38)
                {
                    estadoActual = 80;
                }

                else if (estadoActual == 39)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.FARENHEIT, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 40)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "C")
                    {
                        estadoActual = 41;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 41)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "C")
                    {
                        estadoActual = 42;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 42)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "E")
                    {
                        estadoActual = 43;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 43)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "S")
                    {
                        estadoActual = 44;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 44)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "S")
                    {
                        estadoActual = 45;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 95;
                    }
                }
                else if (estadoActual == 45)
                {
                    estadoActual = 73;
                }

                else if (estadoActual == 46)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "E")
                    {
                        estadoActual = 47;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 53;
                    }
                }
                else if (estadoActual == 47)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "S")
                    {
                        estadoActual = 48;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 48)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 49;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 49)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "A")
                    {
                        estadoActual = 50;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 50)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "R")
                    {
                        estadoActual = 51;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 51)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "T")
                    {
                        estadoActual = 52;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 87;
                    }
                }
                else if (estadoActual == 52)
                {
                    estadoActual = 74;
                }
                else if (estadoActual == 53)
                {
                    DevolverPuntero();
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.RANKINE, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }

                else if (estadoActual == 54)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "A")
                    {
                        estadoActual = 55;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 39;
                    }
                }
                else if (estadoActual == 55)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "I")
                    {
                        estadoActual = 56;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 91;
                    }
                }
                else if (estadoActual == 56)
                {
                    LeerSiguienteCaracter();
                    if (CaracterActual == "L")
                    {
                        estadoActual = 57;
                        concatenarLexema();
                    }
                    else
                    {
                        estadoActual = 91;
                    }
                }
                else if (estadoActual == 57)
                {
                    estadoActual = 75;
                }
                else if (estadoActual == 58)
                {
                    estadoActual = 76;
                }
                else if (estadoActual == 59)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.KELVIN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 60)
                {
                    estadoActual = 59;
                }
                else if (estadoActual == 61)
                {
                    CargarNuevaLinea();
                    limpiarLexema();
                    estadoActual = 0;
                }
                else if (estadoActual == 62)
                {
                    estadoActual = 77;
                }
                else if (estadoActual == 64)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.VALOR_RETORNO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 65)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.SEPARADOR, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 66)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.OUT, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 72)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.STATUS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 73)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.SUCCESS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 74)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.RESTART, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                //eof
                else if (estadoActual == 77)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.EOF, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    limpiarLexema();
                }
                else if (estadoActual == 78)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.IN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 67)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.ON, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 68)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.OFF, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 69)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.UP, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 70)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.DOWN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 71)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.GET, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 75)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.FAIL, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 76)
                {
                    continuarAnalisis = false;;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.CENTIGRADOS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 79)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.START, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);

                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 80)
                {
                    continuarAnalisis = false;
                    componenteLexico  = ComponenteLexico.crear(lexema, Categoria.SHUTDOWN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }

                //stopper
                else if (estadoActual == 63)
                {
                    Error error = Error.CrearErrorLexico(
                        CaracterActual,
                        Categoria.CARACTER_NO_VALIDO, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "Caracter no reconocido", "Leí " + CaracterActual,
                        "Asegurese que el caracter sera valido");

                    GestorErrores.Reportar(error);

                    throw new Exception("Se ha presentado un error de tipo STOPPER durante el análisis lexico. Por favor verifique la consola de errores");
                }
                else if (estadoActual == 83)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.IN, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "IN no válido",
                        "Leí " + lexema + " y se esperaba un IN",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("IN", Categoria.IN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 85)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.OUT, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "OUT no válido",
                        "Leí " + lexema + " y se esperaba un OUT",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("OUT", Categoria.OUT, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 86)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.OFF, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "OFF no válido",
                        "Leí " + lexema + " y se esperaba un OFF",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("OFF", Categoria.OFF, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 88)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.UP, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "UP no válido",
                        "Leí " + lexema + " y se esperaba un UP",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("UP", Categoria.UP, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 89)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.DOWN, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "DOWN no válido",
                        "Leí " + lexema + " y se esperaba un DOWN",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("DOWN", Categoria.DOWN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 90)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.GET, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "GET no válido",
                        "Leí " + lexema + " y se esperaba un GET",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("GET", Categoria.GET, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 92)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.START, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "START no válido",
                        "Leí " + lexema + " y se esperaba un START",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("START", Categoria.START, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 93)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.STATUS, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "STATUS no válido",
                        "Leí " + lexema + " y se esperaba un STATUS",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("STATUS", Categoria.STATUS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 94)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.SHUTDOWN, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "SHUTDOWN no válido",
                        "Leí " + lexema + " y se esperaba un SHUTDOWN",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("SHUTDOWN", Categoria.SHUTDOWN, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 95)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.SUCCESS, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "SUCCESS no válido",
                        "Leí " + lexema + " y se esperaba un SUCCESS",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("SUCCESS", Categoria.SUCCESS, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 87)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.RESTART, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "RESTART no válido",
                        "Leí " + lexema + " y se esperaba un RESTART",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("RESTART", Categoria.RESTART, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 91)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.FAIL, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "FAIL no válido",
                        "Leí " + lexema + " y se esperaba un FAIL",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("FAIL", Categoria.FAIL, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
                else if (estadoActual == 96)
                {
                    continuarAnalisis = false;
                    DevolverPuntero();

                    Error error = Error.CrearErrorLexico(
                        lexema,
                        Categoria.VALOR_ENVIO, NumeroLineaActual,
                        Puntero - lexema.Length, Puntero - 1,
                        "VALOR_ENVIO no válido",
                        "Leí " + lexema + " y se esperaba un VALOR_ENVIO",
                        "asegurese de que la instrucción esté escrita correctamente");

                    GestorErrores.Reportar(error);
                    componenteLexico      = ComponenteLexico.crear("000", Categoria.VALOR_ENVIO, NumeroLineaActual, Puntero - lexema.Length, Puntero - 1);
                    componenteLexico.Tipo = TipoComponente.DUMMY;
                    TablaMaestra.SincronizarSimbolo(componenteLexico);
                    limpiarLexema();
                }
            }

            return(componenteLexico);
        }