Pelo exemplo que foi apresentado acima pode parecer que o lado esquerdo de produções de uma gramática está restrito a um único símbolo não-terminal. Entretanto, da definição de gramáticas deve estar claro que este não é o caso, pois em uma produção
Assim, a gramática
, onde os elementos de
são
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
|
![]() |
![]() |
![]() |
![]() |
|
![]() |
![]() |
Restringindo o tipo de produções que podem aparecer em uma gramática, é possível definir classes especiais de gramáticas, tal como proposto na hierarquia de Chomsky descrita a seguir.
Uma gramática definida sem restrições quanto ao tipo de produções que ela pode conter é dita ser uma gramática de tipo 0.
Uma gramática de tipo 1 obedece à propriedade
para todas as produções da forma
, onde
denota o comprimento (ou número de
símbolos) em
e similarmente para
. Gramáticas
de tipo 1 são também denominadas gramáticas sensíveis ao contexto.
Se a uma gramática de tipo 1 impõe-se a restrição adicional de que todos os
lados esquerdos de produções tenham um único símbolo não-terminal, ou seja,
para todas produções
da
gramática, então diz-se que a gramática é de tipo 2. Gramáticas de
tipo 2 são também denominadas gramáticas livres de contexto.
Gramáticas de tipo 3 ou gramáticas regulares são gramáticas de tipo 2 onde as produções são apenas da forma
![]() |
![]() |
|
![]() |
![]() |
quando a gramática é linear direita, ou da forma
![]() |
![]() |
|
![]() |
![]() |
Por simplicidade de notação, quando um lado esquerdo de uma produção
pode levar a duas (ou mais) formas sentenciais distintas no lado
direito, pode-se representar estas regras de forma compacta usando o
símbolo , lido ou, como em
ou
correspondendo aos exemplos de
gramáticas lineares direita e esquerda, respectivamente.
À hierarquia de gramáticas corresponde uma hierarquia de linguagens. Assim, se uma linguagem pode ser gerada por uma gramática de tipo 3 ela é dita ser uma linguagem de tipo 3.