A RDP consists of a collection of subprograms, many of which are recursive (therefore its name) and produces a parse tree in top-down order.  There is a subprogram for each nonterminal in the grammar.
A nonterminal that has more than one RHS requires an initial process to determine which RHS it is to choose, give an example method to find The correct RHS
 The next token of input is compared with the first token that can be generated by each RHS until a match is found (e.g., the left parenthesis of the <factor> rule)  If no match is found, it is a syntax error.
If a grammar has left recursion, either direct or indirect can it be used?
For each nonterminal, A, Group the A-rules as A → Aα1 | ... | Aαm | β1 | β2 | ... | βn where none of the β’s begins with A Replace the original A-rules with A → β1A’ | β2A’ | ... | βnA’ A’ → α1A’ | α2A’ | ... | αmA’ | ε