Tradicionalmente, gramáticas livres de contexto têm sido utilizadas para realizar a análise sintática de linguagens de programação. Nem sempre é possível representar neste tipo de gramática restrições necessárias a algumas linguagens -- por exemplo, exigir que todas as variáveis estejam declaradas antes de seu uso ou verificar se os tipos envolvidos em uma expressão são compatíveis. Entretanto, há mecanismos que podem ser incorporados às ações durante a análise -- por exemplo, interações com tabelas de símbolos -- que permitem complementar a funcionalidade da análise sintática.
A principal propriedade que distingüe uma gramática livre de contexto de uma gramática regular é a auto-incorporação. Uma gramática livre de contexto que não contenha auto-incorporação pode ser convertida em uma gramática regular.
Auto-incorporação é definida como se segue. Se uma gramática
tiver um símbolo não-terminal
para o qual