Пример #1
0
        private Resultado TP(Resultado operando1)
        {
            if (TokenActual.ObtenerTipoToken() == Token.Tipo.OPERADOR_MULTIPLICACION)
            {
                // TP -> * F TP
                //ExpresionAritmetica += TokenActual.ObtenerValor();
                Parea(Token.Tipo.OPERADOR_MULTIPLICACION);
                Resultado operando2 = F();
                Resultado resultado = new Resultado("Error", "-");
                //F();
                //TP();
                switch (operando1.GetTipo())
                {
                case "var":
                    switch (operando2.GetTipo())
                    {
                    case "var":
                        int valor1 = int.Parse(operando1.GetVal());
                        int valor2 = int.Parse(operando2.GetVal());
                        resultado = new Resultado("var", Convert.ToString(valor1 * valor2));
                        break;
                    }
                    break;
                }

                return(EP(resultado));
            }
            else if (TokenActual.ObtenerTipoToken() == Token.Tipo.OPERADOR_DIVISION)
            {
                // TP -> / F TP
                //ExpresionAritmetica += TokenActual.ObtenerValor();
                Parea(Token.Tipo.OPERADOR_DIVISION);
                Resultado operando2 = F();
                Resultado resultado = new Resultado("Error", "-");
                //F();
                //TP();
                switch (operando1.GetTipo())
                {
                case "var":
                    switch (operando2.GetTipo())
                    {
                    case "var":
                        int valor1 = int.Parse(operando1.GetVal());
                        int valor2 = int.Parse(operando2.GetVal());
                        resultado = new Resultado("var", Convert.ToString(valor1 / valor2));
                        break;
                    }
                    break;
                }

                return(EP(resultado));
            }
            else
            {
                return(operando1);
                //TP -> EPSILON
                //NO HACEMOS NADA
            }
        }
Пример #2
0
        private Resultado EP(Resultado operando1)
        {
            if (TokenActual.ObtenerTipoToken() == Token.Tipo.OPERADOR_SUMA)
            {
                // EP -> + T EP
                //ExpresionAritmetica += TokenActual.ObtenerValor();
                Parea(Token.Tipo.OPERADOR_SUMA);
                Resultado operando2 = T();
                Resultado resultado = new Resultado("Error", "-");
                //T();
                //EP();
                switch (operando1.GetTipo())
                {
                case "var":
                    switch (operando2.GetTipo())
                    {
                    case "var":
                        int valor1 = int.Parse(operando1.GetVal());
                        int valor2 = int.Parse(operando2.GetVal());
                        resultado = new Resultado("var", Convert.ToString(valor1 + valor2));
                        break;
                    }
                    break;
                }

                return(EP(resultado));
            }
            else if (TokenActual.ObtenerTipoToken() == Token.Tipo.OPERADOR_RESTA)
            {
                // EP -> - T EP
                //ExpresionAritmetica += TokenActual.ObtenerValor();
                Parea(Token.Tipo.OPERADOR_RESTA);
                //T();
                //EP();
                Resultado operando2 = T();
                Resultado resultado = new Resultado("Error", "-");

                switch (operando1.GetTipo())
                {
                case "var":
                    switch (operando2.GetTipo())
                    {
                    case "var":
                        int valor1 = int.Parse(operando1.GetVal());
                        int valor2 = int.Parse(operando2.GetVal());
                        resultado = new Resultado("var", Convert.ToString(valor1 - valor2));
                        break;
                    }
                    break;
                }
                return(EP(resultado));
            }
            else
            {
                return(operando1);
                //EPSILON
                //NO HACEMOS NADA
            }
        }