/** * Método que ejecuta la instrucción si..entonces, es una sobreescritura del * método ejecutar que se debe programar por la implementación de la interfaz * instrucción * @param ts tabla de símbolos del ámbito padre de la sentencia. * @return Estra instrucción retorna nulo porque no produce ningún valor en * su ejecución */ public Object ejecutar(TablaDeSimbolos ts) { if ((Boolean)condicion.ejecutar(ts)) { TablaDeSimbolos tablaLocal = new TablaDeSimbolos(); foreach (Simbolo item in ts) { tablaLocal.AddLast(item); } foreach (Instruccion ins in listaInstrucciones) { ins.ejecutar(tablaLocal); } } else { if (listaInsElse != null) { TablaDeSimbolos tablaLocal = new TablaDeSimbolos(); foreach (Simbolo item in ts) { tablaLocal.AddLast(item); } foreach (Instruccion ins in listaInsElse) { ins.ejecutar(tablaLocal); } } } return(null); }
/** * Método que ejecuta la accion de declarar una variable, es una sobreescritura del * método ejecutar que se debe programar por la implementación de la interfaz * instrucción * @param ts Tabla de símbolos del ámbito padre. * @return No retorna nada porque no es una sentencia que genere un valor. */ public Object ejecutar(TablaDeSimbolos ts) { ts.AddLast(new Simbolo(id, tipo)); return(null); }