Exemple #1
0
            public ParteDecimal(TextoAParsear t)
            {
                valor = "";
                try
                {
                    while (true)
                    {
                        char c = t.GetChar();
                        switch (c)
                        {
                        case '0':
                        case '1':
                        case '2':
                        case '3':
                        case '4':
                        case '5':
                        case '6':
                        case '7':
                        case '8':
                        case '9':
                            valor = valor + c;
                            t.CharProcessed();
                            break;

                        default:
                            return;
                        }
                    }
                }
                catch (EndOfString eos)
                {
                    return;
                }
            }
Exemple #2
0
 public Operador(TextoAParsear t)
 {
     operando = ' ';
     try
     {
         if (t.Vacio())
         {
             throw new NotValidObject();
         }
         char c = t.GetChar();
         switch (c)
         {
         case '+':
         case '-':
         case '/':
         case '*':
             operando = c;
             t.CharProcessed();
             return;
         }
         throw new NotValidObject();
     }
     catch (EndOfString eos)
     {
         throw new NotValidObject();
     }
 }
Exemple #3
0
            public Operacion(TextoAParsear t)
            {
                VarIzquierda = null;
                OpIzquierda  = null;
                NumIzquierda = null;

                operador  = null;
                operadorv = null;

                derecha = null;

                try
                {
                    char c = t.GetChar();
                    if (c == '(')
                    {
                        t.CharProcessed();
                        OpIzquierda = new Operacion(t);
                        c           = t.GetChar();
                        if (c == ')')
                        {
                            t.CharProcessed();
                        }
                    }
                    else
                    {
                        try
                        {
                            VarIzquierda = new Variable(t);
                        } catch (NotValidObject)
                        {
                            NumIzquierda = new Numero(t);
                        }
                    }
                    if (VarIzquierda == null)
                    {
                        operador = new Operador(t);
                    }
                    else
                    {
                        operadorv = new OperadorVariable(t);
                    }
                    derecha = new Operacion(t);
                }
                catch (EndOfString eos)
                {
                    return;
                }
                catch (NotValidObject nvo)
                {
                    return;
                }
            }
Exemple #4
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();
        }
Exemple #5
0
 public Numero(TextoAParsear t)
 {
     parteentera  = new ParteDecimal();
     partedecimal = new ParteDecimal();
     try
     {
         parteentera = new ParteDecimal(t);
         char c = t.GetChar();
         if ((c == ',') || (c == '.'))
         {
             t.CharProcessed();
             partedecimal = new ParteDecimal(t);
         }
     }
     catch (EndOfString eos)
     {
         return;
     }
 }
Exemple #6
0
            public OperadorVariable(TextoAParsear t)
            {
                if (t.Vacio())
                {
                    throw new NotValidObject();
                }
                char c = t.GetChar();

                if (c == '=')
                {
                    isAssignment = true;
                    op           = null;
                    t.CharProcessed();
                }
                else
                {
                    op = new Operador(t);
                }
            }
Exemple #7
0
            public Variable(TextoAParsear t)
            {
                char c = t.GetChar();

                switch (c)
                {
                case 'a':
                case 'b':
                case 'c':
                case 'd':
                case 'e':
                case 'f':
                case 'g':
                case 'h':
                case 'i':
                case 'j':
                case 'k':
                case 'l':
                case 'm':
                case 'n':
                case 'o':
                case 'p':
                case 'q':
                case 'r':
                case 's':
                case 't':
                case 'v':
                case 'w':
                case 'x':
                case 'y':
                case 'z':
                    t.CharProcessed();

                    ValueObject = VarValue.FindVar(c);

                    return;
                }
                throw new NotValidObject();
            }