Пример #1
0
        private void run_Click(object sender, EventArgs e)
        {
            string ope = operacion.Text;

            if (ope == "clean")
            {
                log.Text       = "";
                operacion.Text = "";
                VarValue.lista.Clear();
                listaVariables.Text = "";
                return;
            }

            log.Text += ope + " = ";

            string result;

            try
            {
                TextoAParsear tmp = new TextoAParsear(ope);
                Operacion     op  = new Operacion(tmp);
                if (!tmp.Vacio())
                {
                    throw new Exception("Error de sintaxis");
                }
                result = op.Evalua().ToString();


                log.Text += result + "\r\n";

                log.SelectionStart  = log.Text.Length;
                log.SelectionLength = 0;
                log.ScrollToCaret();
                log.SelectAll();

                operacion.Text            = "(" + result + ")";
                operacion.SelectionStart  = operacion.Text.Length;
                operacion.SelectionLength = 0;

                listaVariables.Clear();
                foreach (VarValue val in VarValue.lista)
                {
                    listaVariables.Text += val.nombre.ToString() + ": " + val.value.ToString() + "\r\n";
                }
            }
            catch (Exception ex)
            {
                log.Text += "\r\n" + ex.Message + "\r\n\r\n";
            }
            operacion.Focus();
        }
Пример #2
0
            public double Evalua()
            {
                double izq = 0;
                double der = 0;

                if (derecha != null)
                {
                    der = derecha.Evalua();
                }

                if (VarIzquierda != null)
                {
                    if (operadorv != null)
                    {
                        return(operadorv.Opera(VarIzquierda, der));
                    }
                    else
                    {
                        return(VarIzquierda.Valor());
                    }
                }
                else if (OpIzquierda != null)
                {
                    izq = OpIzquierda.Evalua();
                }
                else if (NumIzquierda != null)
                {
                    izq = NumIzquierda.Valor();
                }

                if (operador != null)
                {
                    return(operador.Opera(izq, der));
                }
                else
                {
                    return(izq);
                }
            }