Exemple #1
0
        public AnalizadorErroresSintacticos(List <Terminal> lineaHastaAhora, ContextoGlobal contextoGlobal, ContextoLinea contextoLinea, List <Terminal> cadenaEntradaFaltante)
        {
            if (TerminalesHelpers.EsTerminalFinBloque(cadenaEntradaFaltante[0]) && lineaHastaAhora.Count == 0)
            {
                ChequearErrorCierreBloqueIncorrecta(cadenaEntradaFaltante[0], contextoGlobal);
            }


            tipoError = TipoFactory.CrearTipo(lineaHastaAhora, contextoGlobal, contextoLinea, cadenaEntradaFaltante);

            if (tipoError == null)
            {
                ConstruirYArrojarExcepcion(cadenaEntradaFaltante[0], contextoGlobal);
            }
        }
        private static Tipos.TipoBase Crear(List <Terminal> lineaEntera, List <Terminal> lineaHastaAhora, ContextoGlobal contextoGlobal, ContextoLinea tipo, int fila, int col)
        {
            Tipos.TipoBase retorno = null;

            switch (tipo)
            {
            case ContextoLinea.Asignacion:
                retorno = new Tipos.Asignacion(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.Leer:
                retorno = new Tipos.Leer(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.LlamadaProc:
                retorno = new Tipos.LlamadoProc(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.Mientras:
                retorno = new Tipos.Mientras(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.Si:
                retorno = new Tipos.Si(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.Sino:
                break;

            case ContextoLinea.DeclaracionFuncion:
                retorno = new Tipos.DeclaracionFuncion(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.DeclaracionProc:
                retorno = new Tipos.DeclaracionProc(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.DeclaracionConstante:
                retorno = new Tipos.DeclaracionConstante(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.DeclaracionVariable:
                retorno = new Tipos.DeclaracionVariable(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.FinFuncion:
                retorno = new Tipos.FinFuncion(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.FinProc:
                retorno = new Tipos.FinProc(lineaEntera, lineaHastaAhora, fila, col);     //terminada 16/3/2012
                break;

            case ContextoLinea.FinMientras:
                retorno = new Tipos.FinMientras(lineaEntera, lineaHastaAhora, fila, col);     //terminada 16/3/2012
                break;

            case ContextoLinea.FinSi:
                retorno = new Tipos.FinSi(lineaEntera, lineaHastaAhora, fila, col);    //terminada 16/3/2012
                break;

            case ContextoLinea.Mostrar:
                retorno = new Tipos.Mostrar(lineaEntera, lineaHastaAhora, fila, col);
                break;

            case ContextoLinea.Ninguno:
                break;

            default:
                break;
            }


            return(retorno);
        }