In general we can define a class of grammars known as the grammars, where represents the number of lookahead symbols needed to eliminate any element of choice from a parse.
Any (regular) grammar constructed from a DFA will be since we
do not need to use FIRST or FOLLOW.
The class of grammars for which we need only one symbol of lookahead
are called grammars - the definitions for FIRST and FOLLOW
given earlier correspond to this case.
Sometimes when we construct an parse table there will be two
or more rules in the same box. In this situation we say that the
grammar is ``not '', since the algorithm has clearly failed to
indicate a non-deterministic parse in all cases.
For any in
, we can adjust the definitions of
FIRST and FOLLOW so that they use symbols of lookahead; this will
give us an parse table. We say that a language is if
there are no duplicate entries in its parse table.
Making greater means that we will be able to parse more languages, but it also means that the algorithm will be more complex, and the resulting parse table will be larger. In general grammars represent the most acceptable compromise between power of expression and ease of implementation for top-down parsers.