The basic idea of a recursive descent parser is to use the
current input symbol to decide which alternative to choose. Grammars
which have the property that it is possible to do this are called
LL(1) grammars.

First we introduce an end marker , for a given
we define the augmented grammar
where

where is chosen s.t.
,

where is chosen s.t.
,

The idea is that

Now for each nonterminal symbol
we define

i.e.
is the set of terminal symbols with which a word
derived from may start and
is the set of symbols
which may occur directly after . We use the augmented grammar to
have a marker for the end of the word.

For each production
we define the set
which are the set of symbols which indicate
that we are in this alternative.

We now say a grammar is LL(1), iff for each pair
with
it is the case
that