private void Panic()
 {
     //este metodo se encarga de evitar que el analisis se detenga por un error, lo recupera
     preanalisis = getNextToken();
     Token.Tipo tipo = preanalisis.TipoToken;
     while (!tipo.Equals(Token.Tipo.puntoycoma))
     {
         tipo = getNextToken().TipoToken;
     }
     //preanalisis = getNextToken();
 }
        private Token Match(Token.Tipo tk, String descripcion)
        {
            Token.Tipo tipo = preanalisis.TipoToken;
            if (tk.Equals(tipo))
            {
                Token tok = preanalisis;
                preanalisis = getNextToken();
                return(tok);
            }
            else
            {
                Errores(descripcion + " y se obtuvo " + preanalisis.Lexema, preanalisis.Fila, preanalisis.Columna);
                Panic();
            }


            return(null);
        }
        public Token Match(Token.Tipo tk, String descripcion)
        {
            Token.Tipo tipo = preanalisis.TipoToken;
            if (tk.Equals(tipo))
            {
                Token  valor = preanalisis;
                String val   = valor.Lexema.ToLower();
                valor.Lexema = val;
                preanalisis  = getNextToken();
                return(valor);
            }
            else
            {
                Errores(descripcion + " y se obtuvo " + preanalisis.Lexema, preanalisis.Fila, preanalisis.Columna);
                Panic();
            }


            return(null);
        }
示例#4
0
        public void revisarTipo()
        {
            Token.Tipo tipoActual  = tipoToken;
            string     valorActual = valor;

            if (tipoActual.Equals(Token.Tipo.IDENTIFICADOR))
            {
                switch (valorActual)
                {
                case "SI":
                    this.tipoToken = Tipo.SI;
                    break;

                case "SINO":
                    this.tipoToken = Tipo.SI_NO;
                    break;

                case "SINOSI":
                    this.tipoToken = Tipo.SINOSI;
                    break;

                case "MIENTRAS":
                    this.tipoToken = Tipo.MIENTRAS;
                    break;

                case "HACER":
                    this.tipoToken = Tipo.HACER;
                    break;

                case "DESDE":
                    this.tipoToken = Tipo.DESDE;
                    break;

                case "HASTA":
                    this.tipoToken = Tipo.HASTA;
                    break;

                case "INCREMENTO":
                    this.tipoToken = Tipo.INCREMENTO;
                    break;

                case "Entero":
                    this.tipoToken = Tipo.ENTERO;
                    break;

                case "Decimal":
                    this.tipoToken = Tipo.DECIMAL;
                    break;

                case "Cadena":
                    this.tipoToken = Tipo.CADENA;
                    break;

                case "Boolean":
                    this.tipoToken = Tipo.BOOLEAN;
                    break;

                case "Chart":
                    this.tipoToken = Tipo.CHART;
                    break;

                case "verdadero":
                    this.tipoToken = Tipo.TRUE;
                    break;

                case "falso":
                    this.tipoToken = Tipo.FALSE;
                    break;

                case "imprimir":
                    this.tipoToken = Tipo.PRINT;
                    break;

                case "leer":
                    this.tipoToken = Tipo.READ;
                    break;

                case "Principal":
                    this.tipoToken = Tipo.PRINCIPAL;
                    break;

                default:

                    break;
                }
            }
        }