/// <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(); }
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); }