Exemplo n.º 1
0
        /**
         * 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);
        }
Exemplo n.º 2
0
        /**
         * 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);
        }