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); }