Example #1
0
        /// <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);
        }
Example #2
0
 public void crearTabla(CrearTabla tabla)
 {
     CrearArchivoTabla(tabla.Id, tabla.Names, tabla.TableName.Trim());
     CrearArbol(tabla.TableName.Trim(), tabla.Id, tabla.Types);
 }