For this specific question, I would say the answer is no, in the sense that each context-free language can have, in principle, any number of distinct context-free grammars which generate it. For example, one can take any grammar $G$ with starting symbol $S$, and create N replicas $G_1$, ..., $G_N$, with starting symbols $S_1$, ..., $S_N$ [by subscripting each non-terminal N times], and combining them into a single grammar by adding a new starting symbol $S_0$ and production $S_0$ --> $S_1$ | ... | $S_N$. And that's not the only trick one can do. On a more serious note, for context-free languages which have deterministically-parsible grammars, there are usually ways to rewrite the grammars to form the basis of a top-down parser, and other ways to rewrite the grammar to form the basis of a bottom-up parser.