Each of the three grammar formalisms discussed so far can suffer from the problems of over or under generation. That is to say that the grammar does not cover the exact language it was designed for. If a grammar allows phrases not present in the language specified, then the grammar is said to overgenerate. Conversely, if the grammar does not allow sentences supposed to be allowed in the language, then the grammar is said to undergenerate.
Both these are tough problems to solve when designing a grammar, since solving a problem with overgeneration can easily lead to a problem with undergeneration and visa versa.