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); } } }
public Aritmetica(tupla tuplaActual) { this.tuplaActual = tuplaActual; }
public Logica(tupla tuplaActual) { this.tuplaActual = tuplaActual; }