public static void Ejecutar() { Log.Clear(); Errores.Clear(); Respuesta.Clear(); if (Master.GetUsuario("admin") == null) { Master.AddUsuario("admin", "admin"); } AnalizadorLUP analizador = new AnalizadorLUP(); if (analizador.AnalizarEntrada(Entrada)) { ASTLUP ast = (ASTLUP)analizador.GenerarArbol(analizador.Raiz.Root); if (ast != null) { ast.Ejecutar(Log, Errores, Respuesta, Master); } else { Respuesta.AddLast(new Salida(1, "[+MESSAGE]\n\tError en Paquete LUP.\n[-MESSAGE]")); } } else { Respuesta.AddLast(new Salida(1, "[+MESSAGE]\n\tError en Paquete LUP.\n[-MESSAGE]")); } //Agregar error en archivo a errores /* * AnalizadorCQL analizador = new AnalizadorCQL(); * * if (analizador.AnalizarEntrada(Entrada)) * { * ASTCQL ast = (ASTCQL)analizador.GenerarArbol(analizador.Raiz.Root); * * if (ast != null) * { * ast.Ejecutar(Log, Errores, Master); * } * } */ }
public void Ejecutar(LinkedList <Salida> log, LinkedList <Error> errores) { MasterBD master = new MasterBD(); //aqui iran todas las tablas master.AddUsuario("admin", "admin"); Entorno global = new Entorno(null); global.Global = global; global.Master = master; object obj; foreach (NodoASTCQL stmt in Sentencias) { if (stmt is FuncionDef fun) { obj = fun.Ejecutar(global, false, false, false, false, log, errores); if (obj is Throw th) { errores.AddLast(new Error("Semántico", "Excepción no Controlada: " + th.Id + ".", th.Linea, th.Columna)); } } } foreach (NodoASTCQL stmt in Sentencias) { if (stmt is Instruccion instr) { if (!(stmt is FuncionDef)) { obj = instr.Ejecutar(global, false, false, false, false, log, errores); if (obj != null) { if (obj is Throw th) { errores.AddLast(new Error("Semántico", "Excepción no Controlada: " + th.Id + ".", th.Linea, th.Columna)); } else if (obj is Break bk) { errores.AddLast(new Error("Semántico", "Sentencia break no se encuentra dentro de un switch o ciclo.", bk.Linea, bk.Columna)); } else if (obj is Continue co) { errores.AddLast(new Error("Semántico", "Sentencia continue no se encuentra dentro de un ciclo.", co.Linea, co.Columna)); } else if (obj is Return re) { errores.AddLast(new Error("Semántico", "Sentencia return no se encuentra dentro de una función o procedimiento.", re.Linea, re.Columna)); } } } } else if (stmt is Expresion expr) { if (expr is FuncionCall fun) { fun.IsExpresion = false; } obj = expr.GetValor(global, log, errores); if (obj is Throw th) { errores.AddLast(new Error("Semántico", "Excepción no Controlada: " + th.Id + ".", th.Linea, th.Columna)); } } } }