/**
         * Método que ejecuta la accion de imprimir un valor, 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 Esta instrucción retorna nulo porque no produce ningun valor al ser
         * ejecutada.
         */

        public Object ejecutar(TablaDeSimbolos ts)
        {
            String impresion = contenido.ejecutar(ts).ToString();

            System.Diagnostics.Debug.WriteLine(impresion);
            return(null);
        }
Exemplo n.º 2
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.º 3
0
        /**
         * Método que ejecuta la instrucción operación, 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 Esta instrucción retorna el valor producido por la operación que se ejecutó
         */

        public Object ejecutar(TablaDeSimbolos ts)
        {
            if (tipo == Tipo_operacion.DIVISION)
            {
                return((Double)operadorIzq.ejecutar(ts) / (Double)operadorDer.ejecutar(ts));
            }
            else if (tipo == Tipo_operacion.MULTIPLICACION)
            {
                return((Double)operadorIzq.ejecutar(ts) * (Double)operadorDer.ejecutar(ts));
            }
            else if (tipo == Tipo_operacion.RESTA)
            {
                return((Double)operadorIzq.ejecutar(ts) - (Double)operadorDer.ejecutar(ts));
            }
            else if (tipo == Tipo_operacion.SUMA)
            {
                return((Double)operadorIzq.ejecutar(ts) + (Double)operadorDer.ejecutar(ts));
            }
            else if (tipo == Tipo_operacion.NEGATIVO)
            {
                return((Double)operadorIzq.ejecutar(ts) * -1);
            }
            else if (tipo == Tipo_operacion.NUMERO)
            {
                return(Double.Parse(valor.ToString()));
            }
            else if (tipo == Tipo_operacion.IDENTIFICADOR)
            {
                return(ts.getValor(valor.ToString()));
            }
            else if (tipo == Tipo_operacion.CADENA)
            {
                return(valor.ToString());
            }
            else if (tipo == Tipo_operacion.MAYOR_QUE)
            {
                return(((Double)operadorIzq.ejecutar(ts)) > ((Double)operadorDer.ejecutar(ts)));
            }
            else if (tipo == Tipo_operacion.MENOR_QUE)
            {
                return(((Double)operadorIzq.ejecutar(ts)) < ((Double)operadorDer.ejecutar(ts)));
            }
            else if (tipo == Tipo_operacion.CONCATENACION)
            {
                return(operadorIzq.ejecutar(ts).ToString() + operadorDer.ejecutar(ts).ToString());
            }
            else
            {
                return(null);
            }
        }
        /**
         * Método que ejecuta la accion de asignar un valor, 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 asignación
         * @return En este caso retorna nulo porque no es una sentencia que genere un valor.
         */

        public Object ejecutar(TablaDeSimbolos ts)
        {
            ts.setValor(id, valor.ejecutar(ts));
            return(null);
        }
Exemplo n.º 5
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);
        }