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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
                }
            }
        }
Exemple #6
0
        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);
        }
Exemple #8
0
        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);
        }