/// <summary> /// Verifica la sintaxis cuando se ejecuta el comando Create Table. /// </summary> /// <param name="datos"></param> /// <returns>Retorna el numero de error. (0 significa que no hay errores) </returns> public int VerificarSintaxisCrearTabla(List <string> datos) { if (!datos.Contains(string.Join("", tiposReservados[0].Split(' ')))) { //No hay existencia de un INT PRIMARY KEY return(8); } //Verificar la existencia de la llave de apertura. if (datos[1] != "(" && !datos.Contains(")")) { //Error de llave de apertura no encontrado return(3); } //En caso que exista algo que no es el operador { if (datos[1] != "(") { //Error de espacios de los nombres de las variables return(9); } //INT PRIMARY KEY distinto de ID if (datos[2] != "ID" || datos[3] != tiposReemplazo[0]) { return(28); } //En caso el ultimo elemento no es la llave de cierre if (datos[datos.Count - 1] != ")" && !datos.Contains(")")) { return(4); } //En caso que exista la llave de cierre pero hay mas elementos despues de esto. if (datos[datos.Count - 1] != ")") { return(1); } //No se crea la tabla debido a que ya existe en el contexto. if (ExisteTabla(datos[0])) { return(27); } CrearTabla nuevaTabla = new CrearTabla(); int[] counts = new int[3]; nuevaTabla.TableName = datos[0]; bool flag = false; for (int i = 2; i < datos.Count - 2; i++) { flag = false; //Omitiendo el nombre y la llave de apertura for (int j = 0; j < tiposReemplazo.Count; j++) { if (datos[i] == tiposReemplazo[j]) { return(10); } if (datos[i + 1] == tiposReemplazo[j]) { flag = true; } } if (flag) { if (datos[i + 1] == tiposReemplazo[0]) { if (nuevaTabla.Id == string.Empty) { nuevaTabla.Id = datos[i]; } else { //Sobrepaso la cantidad de elementos admitidos del tipo de dato nuevaTabla = null; return(12); } } if (datos[i + 1] == tiposReemplazo[1]) { if (counts[0] < 3) { counts[0]++; nuevaTabla.Names.Add(datos[i] + " " + tiposReservados[1]); nuevaTabla.Types.Add(tiposReservados[1]); } else { //Sobrepaso la cantidad de elementos admitidos del tipo de dato nuevaTabla = null; return(13); } } if (datos[i + 1] == tiposReemplazo[2]) { if (counts[1] < 3) { counts[1]++; nuevaTabla.Names.Add(datos[i] + " " + tiposReservados[2]); nuevaTabla.Types.Add(tiposReservados[2]); } else { //Sobrepaso la cantidad de elementos admitidos del tipo de dato nuevaTabla = null; return(13); } } if (datos[i + 1] == tiposReemplazo[3] && counts[2] < 3) { if (counts[2] < 3) { counts[2]++; nuevaTabla.Names.Add(datos[i] + " " + tiposReservados[3]); nuevaTabla.Types.Add(tiposReservados[3]); } else { //Sobrepaso la cantidad de elementos admitidos del tipo de dato nuevaTabla = null; return(13); } } } else { //Error de tipo de dato return(11); } i++; } tabla = nuevaTabla; //TablasPorCrear.Enqueue(nuevaTabla); return(0); }
public void crearTabla(CrearTabla tabla) { CrearArchivoTabla(tabla.Id, tabla.Names, tabla.TableName.Trim()); CrearArbol(tabla.TableName.Trim(), tabla.Id, tabla.Types); }