Context free grammars (CFGs) are formal systems that describe the structure of languages. A CFG consists of variables, terminals, production rules, and a start variable. Production rules take the form of a single variable producing a string of terminals and/or variables. CFGs can capture the recursive structure of natural languages while ignoring agreement and reference. They are used to define context-free languages and generate parse trees. Ambiguous grammars have sentences with multiple parse trees, and disambiguation aims to impose an ordering on derivations. While ambiguity cannot always be eliminated, simplifying and restricting grammars has theoretical and practical benefits.