Escolar Documentos
Profissional Documentos
Cultura Documentos
compilador.
As linguagens livres de contexto têm uma fundamental
importância para a ciência da computação, pois aborda um conjunto Classificamos uma gramática como sendo livre de contexto quando
mais amplo de linguagens. Com ela podemos tratar questões como as regras de produção são todas na seguinte forma: P = { α→β | α ∈
as dos parênteses balanceados construções de blocos e estruturas, N e β ≠ ε }. Ou seja, do lado esquerdo da produção deve, sempre,
entre outras formalidades de linguagens de computação conhecidas. ocorrer um e apenas um não terminal. A sentença vazia também
Seu estudo é fundamental para o desenvolvimento de compiladores, não é aceita do lado direito da produção. Exemplo de uma produção
pois a partir destas são desenvolvidos os analisadores sintáticos, aceita em uma gramática livre de contexto seria X → abcX
parte de um compilador. (não interessa o contexto em que X se encontra)
Segundo a Hierarquia de Chomsky, a classe de linguagens livre de Exemplos de Gramáticas Livres de Contexto:
contexto contém propriamente a classe de linguagens regulares,
mas apesar disto, esta classe ainda é relativamente restrita, sendo G1 = ({A,B}, {0,1,#}, {A →0A1 | B, B → #} , A)
fácil definir linguagens que não pertençam a esta classe.
G2 = ({ S, A, B }, {a, b}, P, S )
As linguagens livres de contexto podem ser estudadas abordando Onde P é:
os seguintes formalismos. S → aB | bA
A → bAA | a | aS
Gramática Livre de Contexto. Trata se de um gerador da
B → b | bS | aBB
linguagem. É uma gramática mais flexível em suas
produções do que a gramática regular, porém ainda com
certas restrições. L(G2) é o conjunto de todas as palavras em T que
tem o mesmo número de a’s e b’s.
Autômato de Pilha. Trata se de um reconhecedor da
linguagem, que consiste basicamente em um autômato finito Note que a gramática acima não é regular devido às produções bAA
não deterministico que utiliza uma pilha, que serve como e aBB.
memória adicional.
Vamos estender a definição da gramática livre de contexto para
Gramáticas Livres de Contexto permitir produções do tipo S →ε, sendo S o símbolo inicial.
Entretanto, isto só será possível se S não aparecer do lado direito
As Gramáticas Livres de Contexto (GLC) tem grande importância de qualquer produção. Desde modo, a regra S →ε somente será
dentro do estudo das Linguagens Formais, pois através delas pode utilizada para dar origem à sentença vazia.
ser descrita a maior parte das construções sintáticas das linguagens
de programação. Estas gramáticas se tornam tão importantes A gramática que possuir o símbolo inicial aparecendo do lado direito
porque podem descrever estruturas recursivas o que as tornam de regras de produção, deverá ser transformada em outra
necessárias para uma variedade de aplicações, como por exemplo,
equivalente que obedeça a esta restrição.Gramáticas equivalentes Exemplo:
devem gerar a mesma linguagem. Considere a gramática G = ( {S, A}, {a, b}, P, S ), onde P consiste
de:
Quando for necessário transformar a gramática, deverá ser incluído S → aAS | a
um novo símbolo não-terminal (S’) que passará a ser o novo A → SbA | SS | ba
símbolo inicial, mais a regra S’→ε.
a derivação da sentença aabbaa é dada por:
Exemplo: Modificar a gramática abaixo de modo a incluir a sentença S → aAS → aSbAS → aabAS → aabbaS → aabbaa
vazia.
G = {{S, A}, {a}, P, S} A árvore de derivação correspondente a essa sentença seria:
P: S → aA S
A → aA | a
Resposta: a A S
G = {{S’, S, A}, {a}, P’, S’}
P’: S’ → S | ε S b A a
S → aA
A → aA | a a b a
E → - E → - ( E ) → - ( E + E ) → - ( id + E ) → - ( id + id ) id E * E E + E
ou id
E → - E → - ( E ) → - ( E + E ) → - ( E + id ) → - ( id + id )
id id id id
Obtenha as derivações mais à esquerda e mais à direita das 7) Construa uma gramática G tal que
sentenças a seguir: +
a) L(G) = { w | w ∈ (0,1,2) e todos os 0´s sejam consecutivos}
+
id * id * id b) L(G) = { w | w ∈ (0,1,2) e todo 0 vem seguido de um 1 }
+
(id + id ) * id c) L(G) = { w | w ∈ (a,b) e w tem no máximo um par de a como
–(id + id ) * id + id subpalavra e no máximo um par de b como subpalavra }
+
d) L(G) = { w | w ∈ (0,1,2) e w não possui 010 como subpalavra }
+
2) Dada a gramática abaixo faça a arvore de derivação para as e) L(G) = { w | w ∈ (a,b,c) e w possui baa como subpalavra}
seguintes sentenças.
G = ({S}, {a, b}, {S → aSbSSε}, S)
a) abab
b) aaabbb