A context-free grammar is deterministic iff its rules allow a (left-to-right, bottom-up) parser to proceed without having to guess the correct continuation at any point.

A language is deterministic context-free iff it is generated by some deterministic context-free grammar. Not all context-free languages are deterministic.

To illustrate: the following grammar is not deterministic:


  S -> aS
  S -> aSb
  S -> b
While we are parsing, we cannot decide which rule to apply without knowing the rest of the string in advance. The language being described is in fact nondeterministic: it is impossible to write a deterministic context-free grammar for it.

Determinism is a stronger notion than nonambiguity. A grammar is ambiguous if it allows two different parses for the same sentence. Determinism requires that ambiguity never arises even temporarily during parsing.