Recursive-Descent Predictive Parser for $S \rightarrow 0S1\ |\ 01$
You may need to modify the grammar. In general this is not necessarily possible (not every CFG is an LL(k) grammar - the class suitable for recursive descent predictive parsing). In this case we can modify the grammar to:

$$\begin{align*}
  &amp;\mathtt{1.} &amp; S &amp;\rightarrow 0SA \\
  &amp;\mathtt{2.} &amp; S &amp;\rightarrow \varepsilon \\
  &amp;\mathtt{3.} &amp; A &amp;\rightarrow  1 \\
\end{align*}$$

Then we have an unambiguous first and follow set for each combination of terminal and non-terminal. So the parsing table looks something like:

$$\begin{array}{l|l|l}
    &amp; 0           &amp;  1 \\ \hline
  S &amp; \mathtt{1.} &amp; \mathtt{2.} \\ \hline
  A &amp;             &amp; \mathtt{3.} \\
\end{array}$$

This gives an LL(1) grammar - one that can be parsed with one symbol of lookahead. It is possible to parse the original grammar without modification using 2 symbols of lookahead (making it an LL(2) grammar), Raphael explains that approach excellently in his answer.

The details are all in the dragon book of course (what isn't!), and better explained there than I can do here.