Beispiel #1
0
        public void obtenerTuplas(ParseTreeNode raiz, Tabla tabla)
        {
            if (raiz.ChildNodes.Count > 0)
            {
                raiz = raiz.ChildNodes[0];
                /*Recorremos la lista de tuplas/registros / :v*/
                foreach (ParseTreeNode nodoTupla in raiz.ChildNodes)
                {
                    tupla newtupla = new tupla();
                    /*Reocorremos la lista de atributos*/
                    foreach (ParseTreeNode nodoCampo in nodoTupla.ChildNodes)
                    {
                        campo cmp = new campo(nodoCampo.ChildNodes[0].Token.Text.Replace("\"", ""),
                                              nodoCampo.ChildNodes[1].ChildNodes[0].Token.Text.Replace("\"", ""));
                        if (nodoCampo.ChildNodes[0].Token.Text.Replace("\"", "").ToLower().Equals(nodoCampo.ChildNodes[2].Token.Text.Replace("\"", "").ToLower()))
                        {
                            if (nodoCampo.ChildNodes[1].ChildNodes.Count == 2) // Si tiene dos nodos el nodo uno es la fecha y el segundo es la hora. Concatenar
                            {
                                cmp.valor = nodoCampo.ChildNodes[1].ChildNodes[0].Token.Text.Replace("\"", "")
                                            + " " + nodoCampo.ChildNodes[1].ChildNodes[1].Token.Text.Replace("\"", "");
                                String   formato = "dd-MM-yyyy hh:mm:ss";
                                DateTime date1   = DateTime.ParseExact(cmp.valor.ToString(),
                                                                       formato, CultureInfo.InvariantCulture);
                                cmp.valor = date1.ToString(formato);
                                cmp.tipo  = "datetime";
                            }
                            else
                            {
                                switch (nodoCampo.ChildNodes[1].ChildNodes[0].Term.Name.ToLower())
                                {
                                case "integer":
                                    cmp.valor = Int64.Parse(nodoCampo.ChildNodes[1].ChildNodes[0].Token.Text.Replace("\"", ""));
                                    cmp.tipo  = "integer";
                                    break;

                                case "cadena_literal":
                                    cmp.valor = nodoCampo.ChildNodes[1].ChildNodes[0].Token.Text.Replace("\"", "").Replace("\"", "");
                                    cmp.tipo  = "text";
                                    break;

                                case "date":
                                    cmp.valor = nodoCampo.ChildNodes[1].ChildNodes[0].Token.Text.Replace("\"", "");
                                    String   formato = "dd-MM-yyyy";
                                    DateTime date1   = DateTime.ParseExact(cmp.valor.ToString(),
                                                                           formato, CultureInfo.InvariantCulture);
                                    cmp.valor = date1.ToString(formato);
                                    cmp.tipo  = "date";
                                    break;

                                case "double":
                                    cmp.valor = Double.Parse(nodoCampo.ChildNodes[1].ChildNodes[0].Token.Text.Replace("\"", ""));
                                    cmp.tipo  = "double";
                                    break;
                                }
                            }
                            /*Comprobamos la integridad de los datos*/
                            newtupla.campos.Add(cmp);
                            //if (tabla.integridadCampo(cmp, formularioACtual))
                            //{
                            //    newtupla.campos.Add(cmp);
                            //}
                            //else
                            //{
                            //    Form1.Mensajes.Add("Error en tipos de datos en el campo");
                            //}
                        }
                        else
                        {
                            Error error = new Error("Semantico", "Error en etiquetas del archivo " + tabla.path, nodoCampo.ChildNodes[0].Token.Location.Line + 1
                                                    , nodoCampo.ChildNodes[0].Token.Location.Column);
                            Form1.errores.Add(error);
                            Form1.Mensajes.Add(error.getMensaje());
                            continue;
                        }
                    }
                    tabla.tuplas.Add(newtupla);
                }
            }
        }
Beispiel #2
0
 public Aritmetica(tupla tuplaActual)
 {
     this.tuplaActual = tuplaActual;
 }
Beispiel #3
0
 public Logica(tupla tuplaActual)
 {
     this.tuplaActual = tuplaActual;
 }