public bool expressao_r(Expressoes expr)
        {
            int         guarda  = index;
            Expressao_r exper_r = new Expressao_r();

            exper_r.expr1 = new Expressao();
            exper_r.opr   = new Operador();
            exper_r.expr2 = new Expressao();

            if (expressao(exper_r.expr1))
            {
                if (operador(exper_r.opr))
                {
                    if (expressao_r(exper_r.expr2))
                    {
                        expr = exper_r;
                        if (notPrinted(guarda))
                        {
                            ExprReduce(guarda);
                        }
                        return(true);
                    }
                }
            }

            index = guarda;
            Expressao_ident expr_ident = new Expressao_ident();

            expr_ident.ident = new Identificador();

            if (identificador(ref expr_ident.ident))
            {
                expr = expr_ident;
                return(true);
            }

            index = guarda;
            Expressao_int expr_int = new Expressao_int();

            if (tokens[index].nome.ToString() == "Inteiro")
            {
                expr_int.inteiro = tokens[index].valor.ToString();
                expr             = expr_int;
                index++;
                return(true);
            }

            index = guarda;
            Expressao_real expr_real = new Expressao_real();

            if (tokens[index].nome.ToString() == "Real")
            {
                expr_real.real = tokens[index].valor.ToString();
                expr           = expr_real;
                index++;
                return(true);
            }

            return(false);
        }
        private bool expressao(Expressao expr)
        {
            int             guarda     = index;
            Expressao_ident expr_ident = new Expressao_ident();

            expr_ident.ident = new Identificador();

            if (identificador(ref expr_ident.ident))
            {
                expr = expr_ident;
                return(true);
            }

            index = guarda;
            Expressao_int expr_int = new Expressao_int();

            if (tokens[index].nome.ToString() == "Inteiro")
            {
                expr_int.inteiro = tokens[index].valor.ToString();
                expr             = expr_int;
                index++;
                return(true);
            }

            index = guarda;
            Expressao_real expr_real = new Expressao_real();

            if (tokens[index].nome.ToString() == "Real")
            {
                expr_real.real = tokens[index].valor.ToString();
                expr           = expr_int;
                index++;
                return(true);
            }
            return(false);
        }