// metodo que reconhece o nao terminal identificadores
        private bool identificadores(ref Identificadores idents)
        {
            int             guarda  = index;
            Identificador_r ident_r = new Identificador_r();

            ident_r.ident1 = new Identificador();

            if (identificador(ref ident_r.ident1))
            {
                if (identificador_r(ref ident_r.ident2))
                {
                    idents = ident_r;
                    return(true);
                }
            }

            index = guarda;

            Identificador ident = new Identificador();

            if (identificador(ref ident))
            {
                idents = ident;
                return(true);
            }

            return(false);
        }
        // metodo auxiliar para reconhecer a recursividade dos identificadores
        private bool identificador_r(ref Identificadores idents)
        {
            int guarda = index;

            if (tokens[index].valor.Equals(','))
            {
                index++;

                Identificador_r ident_r = new Identificador_r();
                ident_r.ident1 = new Identificador();

                if (identificador(ref ident_r.ident1))
                {
                    if (identificador_r(ref ident_r.ident2))
                    {
                        idents = ident_r;
                        return(true);
                    }
                }
            }

            index = guarda;

            if (tokens[index].valor.Equals(','))
            {
                index++;

                Identificador ident = new Identificador();

                if (identificador(ref ident))
                {
                    idents = ident;
                    return(true);
                }
            }

            return(false);
        }