コード例 #1
0
 /// <summary>
 /// Establece un automata donde contenedremos todas las gramaticas clases que se establecieron
 /// </summary>
 public Lenguaje()
 {
     //Establecemos una lista de las gramaticas que contiene el automata
     gramaticas[0]  = new And();
     gramaticas[1]  = new Boolean_();
     gramaticas[2]  = new Cadena();
     gramaticas[3]  = new Chart();
     gramaticas[4]  = new Colon();
     gramaticas[5]  = new ComentarioUnaLinea();
     gramaticas[6]  = new ComentarioVariasLineas();
     gramaticas[7]  = new Comparacion();
     gramaticas[8]  = new Decimal_();
     gramaticas[9]  = new Desde();
     gramaticas[10] = new Diferente();
     gramaticas[11] = new Disminuir();
     gramaticas[12] = new Division();
     gramaticas[13] = new Entero();
     gramaticas[14] = new Hacer();
     gramaticas[15] = new Hasta();
     gramaticas[16] = new Igual();
     gramaticas[17] = new Incrementar();
     gramaticas[18] = new Incremento();
     gramaticas[19] = new Mayor();
     gramaticas[20] = new MayorIgual();
     gramaticas[21] = new Menor();
     gramaticas[22] = new MenorIgual();
     gramaticas[23] = new Mientras();
     gramaticas[24] = new Multiplicacion();
     gramaticas[25] = new Negacion();
     gramaticas[26] = new Or();
     gramaticas[27] = new ParentesisAbrir();
     gramaticas[28] = new ParentesisCerrar();
     gramaticas[29] = new Resta();
     gramaticas[30] = new Si();
     gramaticas[31] = new Sino();
     gramaticas[32] = new Sino_Si();
     gramaticas[33] = new Suma();
 }
コード例 #2
0
        public Resultado ejecutar(ParseTreeNode raiz)
        {
            Resultado resultado = null;

            foreach (ParseTreeNode hijo in raiz.ChildNodes)
            {
                if (resultado != null)
                {
                    return(resultado);
                }
                String tipoAccion = hijo.Term.Name;
                switch (tipoAccion)
                {
                case "CREARDB":
                    Form1.sistemaArchivos.crearBase(hijo);
                    break;

                case "CREARTABLA":
                    Form1.sistemaArchivos.crearTabla(hijo);
                    break;

                case "CONTAR":
                    Form1.sistemaArchivos.contar(hijo);
                    break;

                case "DECLARACION":    //jose
                    Declaracion declaracion = new Declaracion();
                    Boolean     estado      = declaracion.declaracion(hijo);
                    break;

                case "SELECCIONAR":
                    Form1.sistemaArchivos.realizarConsulta(hijo);
                    break;

                case "RESTAURARBD":
                    Form1.sistemaArchivos.restaurar(hijo);
                    break;

                case "BACKUP":
                    Form1.sistemaArchivos.backup(hijo);
                    break;

                case "USAR":
                    Form1.sistemaArchivos.setBaseActual(hijo.ChildNodes[0]);
                    guardarMetodos(raiz, raizCompleta);
                    break;

                case "IMPRIMIR":
                    opL = new Logica();
                    Form1.Mensajes.Add(opL.operar(hijo.ChildNodes[0]).valor + "");
                    break;

                case "USUARIO":
                    Form1.sistemaArchivos.crearUsuario(hijo);
                    break;

                case "ACTUALIZAR":
                    Form1.sistemaArchivos.actualizar(hijo);
                    break;

                case "ALTERARTABLA":
                    Form1.sistemaArchivos.alterarTabla(hijo);
                    break;

                case "ALTERAROBJETO":
                    Form1.sistemaArchivos.alterarObjeto(hijo);
                    break;

                case "ALTERARUSUARIO":
                    Form1.sistemaArchivos.alterarUsuario(hijo);
                    break;

                case "BORRAR":     // Borrar registro en la tupla
                    Form1.sistemaArchivos.borrar(hijo);
                    break;

                case "INSERTAR":
                    Form1.sistemaArchivos.insertar(hijo);
                    break;

                case "PERMISOS":
                    Form1.sistemaArchivos.permisos(hijo);
                    break;

                case "ELIMINAR":
                    Form1.sistemaArchivos.eliminar(hijo);
                    break;

                case "CREAROBJETO":    //jose
                    String        nombreObjeto = hijo.ChildNodes[0].Token.Text;
                    ParseTreeNode atributos    = hijo.ChildNodes[1];
                    Objeto        objeto       = new Objeto(nombreObjeto);
                    foreach (ParseTreeNode nodoAtributo in atributos.ChildNodes)
                    {
                        Atributo atributo = new Atributo(nodoAtributo.ChildNodes[0].ChildNodes[0].Token.Text, nodoAtributo.ChildNodes[1].Token.Text, null);
                        objeto.addAtributo(atributo);
                    }
                    Form1.sistemaArchivos.getBase().agregarObjeto(objeto, hijo.Span.Location.Line, hijo.Span.Location.Column);
                    break;

                case "ASIGNAROBJ":
                    Asignacion asignacion = new Asignacion();
                    asignacion.asignar(hijo);
                    break;

                case "LLAMADA":
                    nivel++;
                    Llamada   llamada = new Llamada(this);
                    Resultado r       = llamada.ejecutar(hijo);
                    nivel--;
                    break;

                case "RETORNO":
                    opL       = new Logica();
                    resultado = opL.operar(hijo.ChildNodes[0]);
                    return(resultado);

                case "SENTSI":
                    Si si = new Si(this);
                    resultado = si.ejecutar(hijo);
                    break;

                case "MIENTRAS":
                    Mientras mientras = new Mientras(this);
                    resultado = mientras.ejecutar(hijo);
                    break;

                case "DETENER":
                    resultado         = new Resultado("Error", null);
                    resultado.detener = true;
                    return(resultado);

                case "PARA":
                    Para para = new Para(this);
                    resultado = para.ejecutar(hijo);
                    break;

                case "SENTSELECCIONA":
                    Selecciona selecciona = new Selecciona(this);
                    resultado = selecciona.ejecutar(hijo);
                    break;
                }
            }
            return(resultado);
        }