public object ejecutar() { SintacticoCQL sintactio = new SintacticoCQL(); string salida = sintactio.analizar(codigo, usuario).ToString(); return(salida); }
/* * METODO QUE SE ENCARGARA DE VER EL TIPO DE OBJETO DE UNA TABLA * @param {atributos} lista de atributos del objeto * @param {mensajes} output * @return Table|Procedure|USER TYPE */ private object tipoCQLTYPE(LinkedList <Atributo> atributos, LinkedList <string> mensajes) { int l = 0; int c = 0; Atributo resA = buscarAtributo(atributos, "cql-type"); if (resA == null) { mensajes.AddLast("Se necesita un CQL-TYPE Linea: " + l + " Columna: " + c); return(null); } string cql_type = resA.valor.ToString(); //--------------------------------------------- TABLAS ---------------------------------------------------------- if (cql_type.Equals("table")) { resA = buscarAtributo(atributos, "name"); if (resA == null) { mensajes.AddLast("Se necesita un Nombre para la tabla Linea: " + l + " Columna: " + c); return(null); } string name = resA.valor.ToString(); resA = buscarAtributo(atributos, "columns"); if (resA == null) { mensajes.AddLast("Se necesitan Columnas para la tabla Linea: " + l + " Columna: " + c); return(null); } LinkedList <Columna> columnas = (LinkedList <Columna>)resA.valor; resA = buscarAtributo(atributos, "data"); if (resA == null) { mensajes.AddLast("Se necesitan Data para la tabla Linea: " + l + " Columna: " + c); return(null); } LinkedList <Data> data = (LinkedList <Data>)resA.valor; return(new Tabla(name, columnas, data)); } // ----------------------------------------------- USER TYPES ----------------------------- else if (cql_type.Equals("object")) { resA = buscarAtributo(atributos, "name"); if (resA == null) { mensajes.AddLast("Se necesita un Nombre para el User type Linea: " + l + " Columna: " + c); return(null); } string name = resA.valor.ToString(); resA = buscarAtributo(atributos, "attrs"); if (resA == null) { mensajes.AddLast("Se necesita un ATTRS para el User type Linea: " + l + " Columna: " + c); return(null); } LinkedList <Attrs> attrs = (LinkedList <Attrs>)resA.valor; return(new User_Types(name, attrs)); } //------------------------------------------------ PROCEDURE ------------------------------------------------- else if (cql_type.Equals("procedure")) { resA = buscarAtributo(atributos, "name"); if (resA == null) { mensajes.AddLast("Se necesita un Nombre para el Procedure Linea: " + l + " Columna: " + c); return(null); } string name = resA.valor.ToString(); resA = buscarAtributo(atributos, "parameters"); if (resA == null) { mensajes.AddLast("Se necesita un Parameters para el PROCEDURE Linea: " + l + " Columna: " + c); return(null); } LinkedList <listaParametros> parametros = new LinkedList <listaParametros>(); LinkedList <listaParametros> retornos = new LinkedList <listaParametros>(); setearParemetrosINOUT(parametros, retornos, (LinkedList <Atributo>)resA.valor); resA = buscarAtributo(atributos, "instr"); if (resA == null) { mensajes.AddLast("Se necesita un Instr para el PROCEDURE Linea: " + l + " Columna: " + c); return(null); } string codigo = resA.valor.ToString(); SintacticoCQL sintactico = new SintacticoCQL(); object respuestaAnalisis = sintactico.analizarProcedure(codigo, mensajes); if (respuestaAnalisis != null) { return(new Procedures(name, codigo, getIdentificador(name, parametros), parametros, getIdentificador("", retornos), retornos, (LinkedList <InstruccionCQL>)respuestaAnalisis)); } else { mensajes.AddLast("Hubo un error en el analisis del INSR para el procedure: " + name); } } return(null); }