Linguagem livre de contexto
Na teoria de linguagens formais, uma linguagem livre de contexto é uma linguagem gerada por alguma gramática livre de contexto. O conjunto de todas as linguagens livres de contexto é idêntico ao conjunto de linguagens aceitas por um autômato de pilha.[1] De acordo com a Hierarquia de Chomsky, linguagens livres de contexto são Tipo-2.
Índice |
[editar] Aplicações
Tais linguagens são importantes para definir linguagens de programação.[1] Por exemplo, as linguagens que requerem o balanceamento de parênteses são geradas pela gramática
. Da mesma forma, a maioria das expressões aritméticas é gerada por gramáticas livres de contexto.
[editar] Exemplos
Uma linguagem livre de contexto é
, a linguagem de todas as cadeias de caracteres não vazias de tamanho par, as primeiras metades sempre preenchidas com "a"s e as segundas metades sempre preenchidas com "b"s. L é gerada pela gramática
, e é aceita pelo autômato de pilha M = ({q0,q1,qf},{a,b},{a,z},δ,q0,{qf}), em que δ é definido da seguinte forma:
δ(q0,a,z) = (q0,a)
δ(q0,a,a) = (q0,a)
δ(q0,b,a) = (q1,x)
δ(q1,b,a) = (q1,x)
δ(q1,b,z) = (qf,z)
δ(estado1,leitura,desempilha) = (estado2,empilha)
Em que z é a pilha de símbolos inicial e x significa desempilhar.
[editar] Propriedades de fechamento
Linguagens livres de contexto são fechadas nas seguintes operações. Se L e P são linguagens livres de contexto e D é uma linguagem regular, as seguintes linguagens também são livres de contexto:[2]
- o fecho de Kleene L * de L[3]
- a imagem φ(L) de L sob um homomorfismo φ
- a concatenação
de L e P[3] - a união
de L e P[3] - a interseção (com uma linguagem regular)
de L e D
Linguagens livres de contexto não são fechadas em complemento, interseção ou diferença.
[editar] Propriedades de decisão
Os seguintes problemas são indecidíveis para quaisquer gramáticas livres de contexto A e B:
- L(A) = L(B)?
?- L(A) = Σ * ?
?
Os seguintes problemas são decidíveis para quaisquer linguagens livres de contexto:
?- L(A) é finito?
- Dada a palavra w,
?
[editar] Decidindo se uma linguagem é ou não livre de contexto
[editar] Teorema da iteração para linguagens livre de contexto
Se L é uma linguagem livre de contexto, então existe um n tal que para todo s ∈ L tal que |s| ≥ n, s pode ser reescrito da forma uvxyz, |vxy| > 0 e |vxy| ≤ n, tal que ∀ i, i ≥ 0 uvixyiz ∈ L
Referências
- ↑ a b David Déharbe (2003). Gramáticas livres de contexto. Página visitada em 23 de agosto de 2008.
- ↑ CS 273: Closure Properties for Context-Free Languages (em inglês). Universidade de Illinois em Urbana-Champaign. Página visitada em 23 de agosto de 2008.
- ↑ a b c Context-Free Grammar (em inglês). Old Dominion University. Página visitada em 23 de agosto de 2008.
de L e P
de L e P
de L e D
?
?
?
?