public override object ejecutarSinposicion(ZContenedor e) { if (entrada == "") { return(new List <Instruccion>()); } AnalizadorCQL an = new AnalizadorCQL(); Parser parser = new Parser(an); ParseTree arbol = parser.Parse(entrada); ParseTreeNode raiz = arbol.Root; //verificar si el arbol no sta nulo if (raiz == null || arbol.ParserMessages.Count > 0 || arbol.HasErrors()) { if (raiz == null || arbol.ParserMessages.Count > 0 || arbol.HasErrors()) { //---------------------> Hay Errores foreach (var item in arbol.ParserMessages) { MessageBox.Show("Error->" + item.Message + " Line:" + item.Location.Line); } return(null); } } List <Instruccion> listIns = (List <Instruccion>)arbol.Root.AstNode; return(listIns ?? new List <Instruccion>()); }
public void pruebaCqlFuncionesList() { var entrada = @" list<int> ids = []; log(ids); ids.insert(1993); ids.insert(93); ids.insert(17); log(ids); log(ids.get(1)); ids.set(1, 993); log(ids); ids.remove(1); log(ids); log(ids.size()); log(ids.contains(17)); log(ids.contains(18)); ids.clear(); log(ids); "; var an = new AnalizadorCQL(); var parser = new Parser(an); var arbol = parser.Parse(entrada); var mensajes = arbol .ParserMessages .Select(message => $"{message.Location} - {message.Message}") ; var errores = string.Join("\n", mensajes); Assert.IsFalse(arbol.HasErrors(), errores); List <Instruccion> listIns = (List <Instruccion>)arbol.Root.AstNode; ZContenedor global = new ZContenedor(null, null); Dbms.cargarTedeUs(); Utilidades.cargarFuncionesNativas(global); //funciones // loadToday(global); // loadNow(global); Utilidades.ejecutarSentencias(listIns, global); }
public void pruebaCqlFuncionesAgregacion() { var entrada = @" create database prueba; use prueba; create table alumnos (peso int, edad int); insert into alumnos values (50, 26); insert into alumnos values (502, 36); insert into alumnos values (93, 17); int algo = count(<<select * from alumnos>>); log(algo); int sumaTotal = sum(<< select edad from alumnos >>); log(sumaTotal); int promedio = avg(<< select edad from alumnos >>); log(promedio); int maximo = max(<< select edad from alumnos >>); int minimo = min(<< select edad from alumnos >>); log(maximo); log(minimo); "; var an = new AnalizadorCQL(); var parser = new Parser(an); var arbol = parser.Parse(entrada); var mensajes = arbol .ParserMessages .Select(message => $"{message.Location} - {message.Message}") ; var errores = string.Join("\n", mensajes); Assert.IsFalse(arbol.HasErrors(), errores); List <Instruccion> listIns = (List <Instruccion>)arbol.Root.AstNode; ZContenedor global = new ZContenedor(null, null); Dbms.cargarTedeUs(); Utilidades.cargarFuncionesNativas(global); //funciones // loadToday(global); // loadNow(global); Utilidades.ejecutarSentencias(listIns, global); }
public override object Ejecutar(MasterBD master, LinkedList <Salida> log, LinkedList <Salida> respuesta, LinkedList <Error> errores) { if (!User.Equals("")) { Usuario user = master.GetUsuario(User); if (user != null) { if (!Data.Equals("")) { master.UsuarioActual = user; AnalizadorCQL analizador = new AnalizadorCQL(); if (analizador.AnalizarEntrada(Data)) { ASTCQL ast = (ASTCQL)analizador.GenerarArbol(analizador.Raiz.Root); if (ast != null) { try { ast.Ejecutar(log, errores, master); } catch (Exception ex) { respuesta.AddLast(new Salida(1, "[+MESSAGE]\n\t$Error en Data, revice las Instrucciones.\n" + ex.Message + "$[-MESSAGE]")); } } else { respuesta.AddLast(new Salida(1, "[+MESSAGE]\n\t$Error en Data, revice las Instrucciones.$\n[-MESSAGE]")); } } else { respuesta.AddLast(new Salida(1, "[+MESSAGE]\n\t$Error en Data, revice las Instrucciones.$\n[-MESSAGE]")); } } } else { respuesta.AddLast(new Salida(1, "[+MESSAGE]\n\t$El usuario que hizo la consulta no existe.$\n[-MESSAGE]")); } } else { respuesta.AddLast(new Salida(1, "[+MESSAGE]\n\t$El parametro User no puede estar vacío.$\n[-MESSAGE]")); } return(null); }
private void BtnRun_Click(object sender, EventArgs e) { rtbSalida.Clear(); if (!txtSource.Text.Equals(String.Empty)) { AnalizadorCQL analizador = new AnalizadorCQL(); if (analizador.AnalizarEntrada(txtSource.Text)) { ASTCQL ast = (ASTCQL)analizador.GenerarArbol(analizador.Raiz.Root); if (ast != null) { LinkedList <Salida> log = new LinkedList <Salida>(); LinkedList <Error> errores = new LinkedList <Error>(); //MessageBox.Show("Documento ok.", "Mensaje"); ReporteErrores(analizador.Raiz); ast.Ejecutar(log, errores); if (log.Count() > 0) { tabBottom.SelectedTab = pageLanguage; foreach (Salida l in log) { rtbSalida.Text += l.Contenido + "\n"; } } if (errores.Count() > 0) { foreach (Error error in errores) { gridErrors.Rows.Add(error.Valor, error.Descripcion, error.Linea); } } } } else { MessageBox.Show("El archivo contiene errores.", "Error"); tabBottom.SelectedTab = tabPage3; ReporteErrores(analizador.Raiz); } } }
public String analizar(String entrada) { Gramatica.Gramatica gramatica = new Gramatica.Gramatica(); LanguageData lenguaje = new LanguageData(gramatica); Parser parser = new Parser(lenguaje); ParseTree arbol = parser.Parse(entrada); ParseTreeNode raiz = arbol.Root; string respuesta = ""; if (raiz != null) { Graficador.Graficador grafo = new Graficador.Graficador(); grafo.graficar(raiz); AST_LUP ast = new AST_LUP(); LinkedList <LUP> lista = ast.Construr(raiz); foreach (LUP lup in lista) { if (lup.tipo.Equals("query")) { AnalizadorCQL cql = new AnalizadorCQL(); cql.Analizar(lup.data); foreach (String men in Estatico.mensajes) { respuesta += men; } } else if (lup.tipo.Equals("login")) { respuesta = "[+LOGIN]SUCCESS[-LOGIN]"; } else if (lup.tipo.Equals("logout")) { respuesta = "[+LOGOUT]SUCCESS[-LOGOUT]"; } else if (lup.tipo.Equals("bases")) { respuesta = "[+message]SE PIDIO BASES[-message]"; } } } else { respuesta = "[+message]SE PIDIO BASES[-message]"; } return(respuesta); }
public void pruebaCql() { var entrada = @" list<int> hola = [2, 3, 4]; int otro = hola[1]; log(otro); log([2,3,4][1]); list<int> ids = [9 , 7, 6] + [ 3, 1, 0]; log(ids); list<list<int>> matrix = [ [6, 3, 2], [9, 8], [7] ]; log(matrix); list<string> vacio = []; log(vacio); "; var an = new AnalizadorCQL(); var parser = new Parser(an); var arbol = parser.Parse(entrada); var mensajes = arbol .ParserMessages .Select(message => $"{message.Location} - {message.Message}") ; var errores = string.Join("\n", mensajes); Assert.IsFalse(arbol.HasErrors(), errores); List <Instruccion> listIns = (List <Instruccion>)arbol.Root.AstNode; ZContenedor global = new ZContenedor(null, null); Dbms.cargarTedeUs(); //funciones // loadToday(global); // loadNow(global); Utilidades.ejecutarSentencias(listIns, global); }
private void BtnParse_Click(object sender, EventArgs e) { if (!txtSource.Text.Equals(String.Empty)) { AnalizadorCQL analizador = new AnalizadorCQL(); if (analizador.AnalizarEntrada(txtSource.Text)) { MessageBox.Show("Documento ok.", "Mensaje"); ReporteErrores(analizador.Raiz); GraficarArbol(analizador.Raiz.Root); } else { MessageBox.Show("El archivo contiene errores.", "Error"); tabBottom.SelectedTab = tabPage3; ReporteErrores(analizador.Raiz); } } }
public void ejecutarAnalizador(string entrada) { //llamada a los cosos de irony AnalizadorCQL an = new AnalizadorCQL(); Parser parser = new Parser(an); ParseTree arbol = parser.Parse(entrada); ParseTreeNode raiz = arbol.Root; //verificar si el arbol no sta nulo if (raiz == null || arbol.ParserMessages.Count > 0 || arbol.HasErrors()) { if (raiz == null || arbol.ParserMessages.Count > 0 || arbol.HasErrors()) { //---------------------> Hay Errores foreach (var item in arbol.ParserMessages) { MessageBox.Show("Error->" + item.Message + " Line:" + item.Location.Line); } return; } } List <Instruccion> listIns = (List <Instruccion>)arbol.Root.AstNode; ZContenedor global = new ZContenedor(null, null); Dbms.cargarTedeUs(); //funciones loadToday(global); loadNow(global); Utilidades.ejecutarSentencias(listIns, global); }